Jquery 延迟数组--数组结果访问问题

Jquery 延迟数组--数组结果访问问题,jquery,jquery-deferred,Jquery,Jquery Deferred,这似乎太奇怪了 我有以下几点 $.when.apply(null, arrayOfDeferredObjects).then(function(result)) { if (1 == arrayOfDeferredObjects.length){ //stuff done here } else{ for (var index = 0; index < contentUnits.length; index++) {

这似乎太奇怪了

我有以下几点

$.when.apply(null, arrayOfDeferredObjects).then(function(result)) {
    if (1 == arrayOfDeferredObjects.length){
       //stuff done here
    }
    else{
        for (var index = 0; index < contentUnits.length; index++) {
            if(arguments && arguments[index][0] && arguments[index][0].response) {
               //stuff done here
            }
        };
    }
$.when.apply(null,arrayOfDeferredObjects)。然后(函数(结果)){
if(1==arrayOfDeferredObjects.length){
//这里做的事
}
否则{
对于(var索引=0;索引
我的期望是,参数将是延迟数组中1个调用的1个对象数组,以及延迟数组中X个调用的X个对象数组


我知道为什么会发生这种情况,但检查数组的长度会让我很沮丧。当只有1个对象且多于1个对象时,参数不是数组。这是显而易见的。我可以做些什么来让返回的参数不仅仅代表第一次调用吗?

像这样的参数总是反映内容立即函数的xt,并且从不引用外部上下文。您还使用了对原始数组的引用,该数组不会根据此代码更改

您的原始数组和Arguments对象不是同一件事,它们只是具有与成员相同的对象引用。Arguments从来都不是数组,并且始终具有长度属性(根据您的语句,我认为您对Arguments做出了一些错误的假设)

then函数参数中的参数将根据when调用中延迟的类型和数量而变化。请参阅规范

最后,由于没有显示迭代的ContentUnits变量,所以我实际上无法为您发布工作代码

我认为有一个更好的方法来做你想做的事情,只是你没有真正说出你想做的事情。
我认为有一个by

参数,像这样,总是反映立即函数的上下文,从不引用上下文之外的内容。您还使用了对原始数组的引用,它不会根据此代码更改

您的原始数组和Arguments对象不是同一件事,它们只是具有与成员相同的对象引用。Arguments从来都不是数组,并且始终具有长度属性(根据您的语句,我认为您对Arguments做出了一些错误的假设)

then函数参数中的参数将根据when调用中延迟的类型和数量而变化。请参阅规范

最后,由于没有显示迭代的ContentUnits变量,所以我实际上无法为您发布工作代码

我认为有一个更好的方法来做你想做的事情,只是你没有真正说出你想做的事情。 我想有一条路要走