Jquery $.when是否按照延迟在数组中的顺序解析延迟数组?

Jquery $.when是否按照延迟在数组中的顺序解析延迟数组?,jquery,jquery-deferred,json-rpc,Jquery,Jquery Deferred,Json Rpc,我有一个数目未知的延迟数组,我正试图用$.when解决它。当所有延迟都已解决时,'.then'函数是否会按照我当时在数组中输入的顺序返回已解决的延迟 伪代码示例: var deferreds = []; for(0,1,2,...,x) { var def = JsonRpc(...); deferreds.push(def); } $.when.apply($, deferreds).then(function () { console.log(arguments.lengt

我有一个数目未知的延迟数组,我正试图用$.when解决它。当所有延迟都已解决时,'.then'函数是否会按照我当时在数组中输入的顺序返回已解决的延迟

伪代码示例:

var deferreds = [];
for(0,1,2,...,x) { 
   var def = JsonRpc(...);
   deferreds.push(def);
}
$.when.apply($, deferreds).then(function () {
  console.log(arguments.length); //outputs a number >= 0
  for(0,1,2,...,x) {
     console.log("Defered: ", arguments[0,1,2,...,x])
  }
});
延期[0]是否等于参数[0],延期[x]是否等于参数[x]

提前感谢您的回复!
//Edvin根据文档:

传递给doneCallbacks的参数提供解析的值 对于每个延期,并匹配延期的顺序 传递给jQuery.when()。例如:

举个小例子:

var递延=[];
对于(变量i=0;i<3;i++){
var def=$.Deferred();
延迟。推送(def);
}
$.when.apply($,延迟)。然后(函数(){
console.log(arguments.length);//输出一个大于等于0的数字
对于(变量i=0;i<3;i++){
log(“延迟:”,参数[i]);
}
});
延期[1]。决议(“第2条”);
延期[2]。决议(“第3条”);
延期[0]。解决(“Fish1”)

一次只回答一个问题/陈述

$.when是否按照延迟在数组中的顺序解析延迟数组

否。
$。when()
无法解析传递给它的延迟/承诺。它聚合了延期/承诺,每个延期/承诺都通过其他方式解决(解决或拒绝)。在这里,“聚合”意味着接受一组承诺并返回单个承诺

我有一个数目未知的延迟数组,我正试图用$.when解决它

同样,
$.when()
不会解决传递给它的延迟/承诺

当所有延迟都已解决时,'.then'函数是否会按照我当时在数组中输入的顺序返回已解决的延迟

否,
.then()
不会返回延迟、已解决或其他情况。但是是的,它的成功回调函数(如果它激发)的参数将与原始数组一致

延期[0]是否等于参数[0],延期[x]是否等于参数[x]


不,它们不会相等,但它们会一一对应。每个参数都将是原始数组中相应延迟/承诺的结果。

我相信这是一个重复的问题:谢谢您的回答!很好的例子。我已经阅读了这部分文档,但不知道它是否也适用于阵列。我对Javascript还是很陌生,因此必须确保:)
var d1 = $.Deferred();
var d2 = $.Deferred();

$.when( d1, d2 ).done(function ( v1, v2 ) {
    console.log( v1 ); // "Fish"
    console.log( v2 ); // "Pizza"
});

d1.resolve( "Fish" );
d2.resolve( "Pizza" );