Javascript 正在尝试将XHR添加到Queue.js以显示进度

Javascript 正在尝试将XHR添加到Queue.js以显示进度,javascript,d3.js,queue.js,Javascript,D3.js,Queue.js,我正试图通过以下代码将进度表添加到我的文件中: 我有一个XHR,进展良好,如下所示: d3.csv("data/WLAN2.csv") .on("progress", function() { var i = d3.interpolate(progress, d3.event.loaded / d3.event.total); d3.transition().tween("progress", function() { return functi

我正试图通过以下代码将进度表添加到我的文件中:

我有一个XHR,进展良好,如下所示:

d3.csv("data/WLAN2.csv")
    .on("progress", function() {
      var i = d3.interpolate(progress, d3.event.loaded / d3.event.total);
      d3.transition().tween("progress", function() {
        return function(t) {
          progress = i(t);
          foreground.attr("d", arc.endAngle(twoPi * progress));
          text.text(formatPercent(progress));
        };
      });
    })
    .get(function(error, data) {
      meter.transition().delay(250).attr("transform", "scale(0)");
    })
我现在尝试将其添加到Queue.js中,但它不起作用:

queue()
.defer(d3.csv("data/WLAN2.csv")
    .on("progress", function() {
      var i = d3.interpolate(progress, d3.event.loaded / d3.event.total);
      d3.transition().tween("progress", function() {
        return function(t) {
          progress = i(t);
          foreground.attr("d", arc.endAngle(twoPi * progress));
          text.text(formatPercent(progress));
        };
      });
    })
    .get(function(error, data) {
      meter.transition().delay(250).attr("transform", "scale(0)");
    })
)
.await(transformData);
我得到一个错误:

未捕获的TypeError:对象#没有“应用”方法

如果我尝试一个非常简单的版本,它会起作用:

queue()
.defer(d3.csv("data/WLAN2.csv")
    .on("progress", function() { 
       console.log("Loading data/WLAN2.csv: ",formatPercent(d3.event.loaded/d3.event.total));                                                        })
    .get) 
.await(transformData);

感谢您的帮助,我不明白为什么它不起作用。我想我可以将一个有效的XHR传递给Queue.js。

Queue.js希望得到一个接受回调参数的函数。在您的代码中,您正在传递一个经过计算的函数,因此它将不起作用。应该使用以下代码

queue()
.defer(function(f) {
  d3.csv("data/WLAN2.csv")
    .on("progress", function() {
       var i = d3.interpolate(progress, d3.event.loaded / d3.event.total);
       d3.transition().tween("progress", function() {
         return function(t) {
           progress = i(t);
           foreground.attr("d", arc.endAngle(twoPi * progress));
           text.text(formatPercent(progress));
         };
     });
  })
  .get(function(error, data) {
    meter.transition().delay(250).attr("transform", "scale(0)");
    f(error, data);
  })
})
.await(transformData);

Well queue期望得到一个接受回调参数的函数。在您的完整版本中,您没有传递这些信息。您是否尝试过类似
.defer(函数(f){d3.csv(…)。on(…).get(函数(错误,数据){meter…;f(错误,数据);})})的功能
?Lars,您答对了,非常感谢您花时间回复。你能不能把这个作为一个“答案”贴出来,这样我就可以接受了?