让d3.text按顺序运行?

时间:2014-07-28 04:43:12

标签: javascript d3.js

我正在使用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);
            });
        }
}

1 个答案:

答案 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!"); });