0

参考这个问题的答案:

使用 jQuery 的并行异步 Ajax 请求

我们可以做类似的事情并在体内有 d3 个对象吗

问题中的示例

var done = 4; // number of total requests
var sum = 0;

/* Normal loops don't create a new scope */
$([1,2,3,4,5]).each(function() {
  var number = this;
  $.getJSON("/values/" + number, function(data) {
    sum += data.value;
    done -= 1;
    if(done == 0) $("#mynode").html(sum);
  });
});
4

1 回答 1

0

正如评论中提到的,d3.json工作原理大致相同,$.getJSON因此您可以采用相同的方法。但是,有一个库Queue.js由与 D3 相同的作者编写,它为您规范了该过程并使结果更易于处理。

以下是D3 发行说明中的​​示例:

queue()
    .defer(d3.json, "us-states.json")
    .defer(d3.tsv, "us-state-populations.tsv")
    .await(ready);

function ready(error, states, statePopulations) {
  // display map here
}

我还应该提到,d3 并不关心数据是如何到达的,所以如果您已经计划在页面中与 d3 一起使用 jQuery,那么通过 d3 自己的方法获取数据并没有真正的好处。d3 内置 d3.json 之类的主要好处是,如果您不需要它,则可以避免加载类似 jQuery 之类的东西。

于 2013-07-25T13:45:37.980 回答