This example demonstrates using the Fetch API and Promises, in conjunction with d3-dsv, to load a few CSV files in parallel. Compare this to using d3-queue, which also allows configurable concurrency.
forked from mbostock's block: Fetching CSV
| license: gpl-3.0 |
| <!DOCTYPE html> | |
| <meta charset="utf-8"> | |
| <style> | |
| h1 { | |
| text-align: center; | |
| font-family: "Helvetica Neue"; | |
| font-size: 96px; | |
| line-height: 350px; | |
| } | |
| </style> | |
| <h1>1 + 2 + 3 = <span id="result">?</span></h1> | |
| <script src="https://d3js.org/d3-dsv.v0.3.min.js"></script> | |
| <script> | |
| Promise.all([ | |
| "one.csv", | |
| "two.csv", | |
| "three.csv" | |
| ].map(function(url) { | |
| return fetch(url).then(function(response) { | |
| return response.ok ? response.text() : Promise.reject(response.status); | |
| }).then(function(text) { | |
| return d3_dsv.csvParse(text); | |
| }); | |
| })).then(function(value) { | |
| var one = +value[0][0].number, | |
| two = +value[1][0].number, | |
| three = +value[2][0].number; | |
| document.querySelector("#result").textContent = one + two + three; | |
| }); | |
| </script> |
| number | |
| 1 |
| number | |
| 3 |
| number | |
| 2 |