javascript - jquery - 当一系列 promise 成功时运行回调

标签 javascript jquery ajax promise

我有一组 promise ,我正在尝试添加一个回调,当所有这些都成功时将执行该回调。这是 jQuery $.when() 的主要用例,但它无法正常工作。

我为几个不同的 ajax 查询运行了这段代码:

// Global variable that holds the promises
var dygraph_promises = []

var plot_promise = $.ajax()
plot_promise.done(function(a) {
      console.log("DONE!");
      // do stuff with data
});

// Keep track of promises
dygraph_promises.push(plot_promise);

然后我想在一切完成后运行下面的代码

// Synchronize dygraphs together
console.log(dygraph_promises);
console.log(dygraph_promises.length);
$.when.apply($, dygraph_promises)
   .then(function() {
       console.log("when called!");
   });

当我在控制台中运行此代码时,我看到字符串 "when called" 打印在字符串 "DONE" 之前。所以 when 在所有调用完成之前触发..

知道为什么这不起作用吗?

最佳答案

感谢@adeneo 的帮助,我发现我没有使用标准的 jQuery promises。结果,我开始使用 q.js库,并使用 all 调用 there

Q.all(dygraph_promises)
   .then(function(a) {
     ...
   )};

关于javascript - jquery - 当一系列 promise 成功时运行回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29956374/

相关文章:

javascript - jquery .ajax() 问题

javascript - Flickity 不隐藏在桌面上

javascript - 使用带有单一选择的 ui 标记

javascript - 可折叠的常见问题解答,其中包含跳转至和展开其他问题的链接

jquery - 如果满足条件则显示警报,几乎类似于 onbeforeunload

javascript - 在 ajax 调用后,jquery 隐藏不适用于同一个 div 类?

javascript - 无法使用 $pull (Mongoose) 删除用户模型数组中的对象

javascript - 如何让这个特定的animatedModal.js加载到document.ready上?

java - AJAX w/Java 的当前核心技术?

javascript - 将参数以及二进制文件数据传递给 Web api Controller ?