block by mbostock 44466fb0ff73bd630172020fc66df1dc

Fetching CSV

Full Screen

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.

index.html

<!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.v1.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.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>

one.csv

number
1

three.csv

number
3

two.csv

number
2