【发布时间】:2013-05-02 10:21:43
【问题描述】:
有没有办法取消正在进行的延迟回调队列? 我有任意数量的 ajax 调用。当成功数据返回特定标记时,我想停止进一步的 ajax 请求:
this.oDeferred=$.Deferred();
this.oChain=this.oDeferred;
for(var i=0; i<this.aKey.length; i++) {
(function(iKey,self) {
self.oChain=self.oChain.then(function(){
return $.ajax({
url:self.aUrl[iKey],
type:'post',
data:{'ajax':true},
dataType:'json',
success:function(data) {
if(data.bCancel==true) {
//stop deferred object here!
}
}
});
})
}(this.aKey[i],this))
}
this.oDeferred.done(function() {
console.log('done')
});
this.oDeferred.resolve()
顺便说一句,在发出所有 ajax 请求后,函数 done() 会自动触发。所有ajax请求完成后如何执行函数?
提前谢谢你!
【问题讨论】:
标签: javascript jquery deferred