小编zaz*_*abe的帖子

jquery延迟 - 在第一次拒绝时调用"always"

我正在使用$.when链接一些Deferred对象,如果其中一个失败,则该always方法将在失败后直接调用,即使我仍然有一个处于"挂起"状态的延迟器.

var promises = [], defs = [];

for(var i=0 ; i < 10 ; i++){
    defs.push($.Deferred());
    promises.push(defs[i].promise());
}

var res = $.when.apply($, promises);

res.fail(function(){console.log('failed')});
res.done(function(){console.log('done')});
res.always(function(){console.log('always')});
res.then(function(){console.log('then, done')},      
         function(){console.log('then, failed')});        

var j = 0;                      
var t = setInterval(function(){
    if(j < 10){
        if(j < 5) {
            console.log('resolve');
            defs[j++].resolve();    
        }
        else {
            console.log('reject');
            defs[j++].reject();
        }
    }
    else {
        clearInterval(t);        
    }
}, 200); 
Run Code Online (Sandbox Code Playgroud)

检查这个jsfiddle.

也许这是正常行为.但是,在这种情况下,即使其中一些失败,我如何才能抓住我的链条的末端?

javascript jquery jquery-deferred

10
推荐指数
1
解决办法
2917
查看次数

标签 统计

javascript ×1

jquery ×1

jquery-deferred ×1