【发布时间】:2022-01-28 07:22:32
【问题描述】:
我一直在寻找几个小时来创建一个 javascript 变量来保存来自导入的 JSON 对象的数据。我找不到任何可以帮助我弄清楚的东西。每次我搜索这个主题时,它都会让我看到有关如何在 js 中启动 JSON 文件以供外部使用的教程。我正在尝试将变量与带有 D3.js 的 JSON 对象一起使用。这是我上次尝试的基本代码:
const dataset =
document.addEventListener('DOMContentLoaded', function(){
fetch('https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/GDP-data.json')
.then(response => response.json())
.then(data => data.data);
});
console.log(dataset);
我知道我可以将console.log 放在fetch().then() 方法中,但是为了以我想要的方式将它与D3.js 一起使用,它需要是一个全局变量。我试图在fetch() 方法中初始化变量,但这不允许我在全局范围内使用它。我也试过这种代码:
var dataset = [];
document.addEventListener('DOMContentLoaded', function(){
fetch('https://raw.githubusercontent.com/freeCodeCamp/ProjectReferenceData/master/GDP-data.json')
.then(response => response.json())
.then(data => dataset = data.data);
});
console.log(dataset);
如您所料,数据集仍然是一个空数组。
---更新---
这是codepen项目:
https://codepen.io/critchey/pen/YzEXPrP?editors=0010
【问题讨论】:
-
使用 setIterval 并检查 'dataset' 直到它有值,但我确信 d3js 有办法从 .then 调用它的方法来加载数据
-
“数据集仍然是一个空数组”,因为您在填充数据之前对其进行了记录。您对 console.log 的调用发生在 fetch/then 发生之前。
标签: javascript d3.js fetch fetch-api