【发布时间】:2014-08-01 13:52:15
【问题描述】:
我有一些代码:
var cdata = [];
d3.text("tests.info", function(text) {
var data = d3.csv.parseRows(text);
data.forEach(function(d) {
cdata.push({key: d[0],values: []}
);
});
});
它正在读取一个 CSV 文件,然后在将它们添加到数组之前循环遍历这些行。我已经使用日志来查看数据是否被正确添加,所以这很好。
问题是,如果我之后尝试访问该数组,它是空的,就好像从未添加数据一样(尽管我知道这不是真的)。
我认为这与范围界定有关,但我认为 push() 无论如何都应该以这种方式工作。
【问题讨论】:
-
这不是作用域,它是异步行为。
d3.text()调用之后的代码在回调函数运行之前立即执行。在.forEach()之后的回调函数内添加console.log(cdata)。
标签: javascript arrays d3.js dynamic-arrays