使用版本1.8.3时出现jquery$.when错误

使用版本1.8.3时出现jquery$.when错误,jquery,ajax,deferred,Jquery,Ajax,Deferred,我在一个数组中保留了数量可变的ajax承诺。 当所有的承诺都兑现时,我会做些别的事情: $.when.apply($, promises).then( function(){ var myArgs = []; if(promises.length == 1){ var myArgs = []; myArgs[0] = arguments; }else{ myArgs = arguments; } for(

我在一个数组中保留了数量可变的ajax承诺。 当所有的承诺都兑现时,我会做些别的事情:

$.when.apply($, promises).then( function(){ 
    var myArgs = [];
    if(promises.length == 1){
        var myArgs = [];
        myArgs[0] = arguments;
    }else{
        myArgs = arguments;
    }

    for(i=0; i<myArgs.length; i++){
        fileArr[promise2File[i]]['prop1'] = myArgs[i][0].type;
        fileArr[promise2File[i]]['prop2'] = myArgs[i][0].message;
    }
});

您知道为什么我在较新版本的jquery上出现此错误吗?

在jquery 1.8中,该版本的被删除并替换为一个接受完成/失败回调,而不是接受完成/失败过滤器的版本

从.then更改为.done应该可以解决您的问题

$.when.apply($, promises).done(function(){ 

.then
在1.8之后基本上与
在1.8之前的.pipe
相同

使用.done代替。然后,它的功能在jquery的更高版本中发生了更改。凯文,这都是真的,但它是否解释了错误消息“uncaughttypeerror:Object[Object Object]没有方法‘progress’”?也许我是在装傻,但我看不出来。使用
.then()
作为链的最后一个方法,它是否在1.8之前/之后不是学术性的吗?对我来说,
parent.myFunc()
更可能返回由jQuery以外的库生成的承诺,Beetroot Beetroot pre-1.8
。然后,
没有尝试将回调添加到
。progress
,除非您给它一个进度回调,因为
。然后
pre-1.8的功能完全不同。myFunc很可能从另一个库返回了一个promise对象,但只要它实现了足够的功能,jquery就可以处理它。我想我尝试了所有的组合([then,done]x[v1.6,v1.8]),但我想我没有。在1.8版中使用.done效果很好。
$.when.apply($, promises).done(function(){