0

我创建了几个通用的函数来包装 d3.json() AJAX 函数。

this.getData4 = function(url, returnFunc, param1, param2, param3) {
  d3.json(url, function(returnData) {
    if (returnData !== null) {
      returnFunc(returnData, param1, param2, param3);
    }
  });
}

是的,这很丑陋。忍受我。在此代码段的第二行和第三行插入断点将显示我的请求已正确发送。例如,我发送了 4 个请求,其中param1= 0、1、2 和 3。然后响应返回到匿名回调函数中,并且大多数将被重复 - 例如,我可能会返回一系列响应,其中param1= 1 , 1, 1, 0, 2, 2, 2, 3, 3, 3。

查看我的服务器日志,只有 4 个请求命中。查看 Chrome 中的网络选项卡,我看到了正确数量的响应。但是回调函数从 d3 内部被多次调用。

更多信息:我正在使用 d3 2.4.2。我还替换了 d3/lib 中的 jQuery 版本——d3 附带的 jQuery 是 1.4.2,即使是最新的 d3 似乎也是如此。然而,这个 jQuery 在其 AJAX 方法中存在严重的内存泄漏,为了解决这个问题,我在 jQuery 1.7.2 中删除了这个问题。D3 从未抱怨过更换,但由于我找不到有关此问题的其他信息,我怀疑这两个 jQueries 之间可能没有严格的兼容性。

4

0 回答 0