Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jquery-在承诺数组成功时运行回调_Javascript_Jquery_Ajax_Promise - Fatal编程技术网

Javascript jquery-在承诺数组成功时运行回调

Javascript 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!");

我有一系列的承诺,我正在尝试添加一个回调,当所有这些都成功时将执行该回调。这是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!");
   });
当我在控制台中运行此代码时,在字符串
“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) {
     ...
   )};