Jquery 多个$.getJSON请求在promise中以不同的方式返回

Jquery 多个$.getJSON请求在promise中以不同的方式返回,jquery,jquery-deferred,promise,Jquery,Jquery Deferred,Promise,我有以下代码: var aReq = $.getJSON('/path/A'), bReq = $.getJSON('/path/B'); $.when(aReq, bReq).then(function(A, B) { console.log(A, B); // logs: [Array[5], "success", Object], [Array[20], "success", Object] }); 为什么要将其包装在“jqXHR数组”中 使用单个$.getJSON不会

我有以下代码:

var aReq = $.getJSON('/path/A'),
    bReq = $.getJSON('/path/B');

$.when(aReq, bReq).then(function(A, B) {
  console.log(A, B);
  // logs: [Array[5], "success", Object], [Array[20], "success", Object]
});
为什么要将其包装在“jqXHR数组”中

使用单个
$.getJSON
不会发生这种情况:

var aReq = $.getJSON('/path/A');
$.when(aReq).then(function(A) {
  console.log(A);
  // logs: [Object, Object, Object, Object, Object]
  // just like I wanted it in the first version
});
有没有办法实现第一个版本的工作?也许我理解了承诺/延迟对象的错误


FWIW:在这种情况下,我使用的是jQuery版本1.7.1。

这在api中作为预期行为得到了很好的记录:

如果它不是在数组中返回的,那么考虑到每个传入的承诺可能会返回多个参数,它如何为每个传入的承诺返回不同的结果

从文件中:

如果将单个参数传递给jQuery.when,并且它不是延迟的 或承诺,将被视为已解决的延期和任何 附加的doneCallbacks将立即执行。doneCallbacks 通过了最初的论点。在这种情况下,任何故障都会回调您 可能设置从未被调用,因为延迟设置从未被拒绝

在将多个延迟对象传递给jQuery.when的情况下, 该方法从新的“主”延迟对象返回承诺 跟踪所有延期的累计状态 通过。该方法将在所有 延迟解决,或在其中一个 延期被拒绝。如果主控延迟得到解决,则为 传递传递给的所有延迟的已解析值 jQuery.when。例如,当延迟为jQuery.ajax()时 请求,参数将是请求的jqXHR对象,在 参数列表中给出的顺序


你有没有试过一次只记录一个@不,那些是单独的测试。该死,我搜索了所有的
$。然后
。谢谢,现在有道理了