Getting Data Using D3.json() Is Not Working, While It Works Using Js Async Await.. Why?
I am trying to get some data from url to work with in d3.js. I can't seam to get the data using d3.json(url, callback). While it works fine when I use (ES8) async await function. C
Solution 1:
According to the documentation, d3.json returns a promise, like fetch does, rather than accepting a callback. (Edit: Apparently in v4 it accepted a callback — that explains it.) If you use that promise, it works.
You can either use the promise via async/await as you did with fetch, or by using then and (since you're not returning the chain to anyone else who would handle it) catch.
async/await:
(asyncfunction() {
try {
const jsonResponse = await d3.json("https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/GDP-data.json");
const data = jsonResponse.data; // array of dates and valuesconst lowestVal = d3.min(data, d => d[1]);
const highestVal = d3.max(data, d => d[1]);
console.log(lowestVal);
console.log(highestVal);
} catch(error) {
console.log(error);
}
})();<scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>then/catch:
d3.json("https://raw.githubusercontent.com/FreeCodeCamp/ProjectReferenceData/master/GDP-data.json")
.then(json => {
const data = json.data; // array of dates and valuesconst lowestVal = d3.min(data, d => d[1]);
const highestVal = d3.max(data, d => d[1]);
console.log(lowestVal);
console.log(highestVal);
})
.catch(error => {
console.error(error);
});<scriptsrc="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
Post a Comment for "Getting Data Using D3.json() Is Not Working, While It Works Using Js Async Await.. Why?"