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 |