Javascript jquery-在承诺数组成功时运行回调
我有一系列的承诺,我正在尝试添加一个回调,当所有这些都成功时将执行该回调。这是jQueryJavascript jquery-在承诺数组成功时运行回调,javascript,jquery,ajax,promise,Javascript,Jquery,Ajax,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!");
$.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!");
});
当我在控制台中运行此代码时,在字符串“DONE”
之前打印调用“时,我会看到字符串”。因此,
在所有调用完成之前触发时的
你知道为什么这不起作用吗?多亏@adeneo的帮助,我发现我没有使用标准的jQuery承诺。因此,我开始使用库,并使用all
调用
无法复制->嗯,很有趣。实际上,我使用的不是$.ajax()
,而是一个围绕它的库(XDB js)。但是,返回的对象与$.ajax()
返回的对象的字段不同。我将相应地更新问题嗯,您不能使用$。当
处理非jQuery的对象时?当我查看该调用返回的对象时,我看到以下字段:n{then=function(),done=function(),nodeify=function()}
。我认为这是一个标准的承诺/延迟,因此我可以使用jQuery。但是内容与$.ajax()
返回的字段不匹配。你知道这是什么吗?所有的承诺都是“thenable”,所以它们返回的属性都差不多,但目前我认为jQuery的$。当
只支持jQuery的承诺时,顺便说一句,它不符合A+标准。如果可以,请接受你的答案,这样其他用户就不会来问这个问题并试图帮助你;)
Q.all(dygraph_promises)
.then(function(a) {
...
)};