【发布时间】:2017-04-25 04:45:42
【问题描述】:
var info = [];
var data = [];
var ids;
function loadData() {
d3.json('data/res/ID.json', function (error, d) {
ids = d.ids;
d.ids.forEach(function (id, i) {
d3.json('data/res/json/' + id + '.json', function (error, d) {
info.push({
"id": id,
"value": d
})
})
});
initMap(ids, info);
});
}
我只是想从几个 csv 文件中读取并在 var info 中创建一个对象数组。然后我想将数组传递给一个名为 initMap() 的函数。但是,当我在 initMap() 中使用 console.log(info) 时,它会显示一个空数组。
我真的对函数的执行顺序感到困惑。如果我想确保 var 信息在传递给 initMap() 之前完成,该怎么办?
【问题讨论】:
-
您在将数据推送到信息数组时是否调试过响应?该 ajax 调用是否返回任何响应数据?该 ID.json 是否返回任何数据?
-
function loadData() { d3.json('data/res/ID.json', function (error, d) { var ids = d.ids; var info = []; d.ids.forEach(function (id, i) { d3.json('data/res/json/' + id + '.json', function (error, d) { info.push({ "id": id, "value": d }) }) }); console.log(ids, info); }); } -
有两种类型的 javascript 程序员。另一个没有。懂异步代码的人,
-
@JaromandaX:我喜欢那个:D
标签: javascript arrays function d3.js undefined