我正在使用d3创建地块。
我正在运行循环,我在每次迭代时调用此函数:
d3.text(filename[data_idx_outer], "text/csv", function(text)
据我所知,这个函数是异步调用的。然而,对我来说,同步运行它是非常重要的,因为我必须按特定顺序读取文件。
因此,如何使此功能顺序运行?如果没有,我必须这样做,可能有什么变通方法?
this.cp_redraw = function() {
if(this._redraw_in_progress)
return;
this.cp_setup_svg();
this.datums = new Array();
for(data_idx_outer in this.cp_input_files) {
var myObj = function(obj) {
return function() {
return obj;
}
}
d3.text(filename[data_idx_outer], "text/csv", function(text){
data = d3.csv.parseRows(text);
self.datums.push(data);
});
}
}
答案 0 :(得分:0)
最简单的方法是使用async
库,例如位于https://github.com/mbostock/queue的Mike Bostock自己的queue
。
var q = queue(1);
tasks.forEach(function(t) { q.defer(t); });
q.awaitAll(function(error, results) { console.log("all done!"); });