javascript – jQuery延期:取消进度
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – jQuery延期:取消进度,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1637字,纯文字阅读大概需要3分钟。
内容图文
![javascript – jQuery延期:取消进度](/upload/InfoBanner/zyjiaocheng/700/5e0cbba630d14557981ce9d42802d9ca.jpg)
有没有办法取消正在进行的延迟回调队列?
我有一个任意数量的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请求完成后如何执行函数?
先感谢您!
解决方法:
答案是肯定的.有两种方法可行.
.然后()
.then()方法返回一个新的promise,其状态由传递给方法的处理程序返回的内容决定.
>通过返回一个非承诺的值/对象,新的承诺沿着方法链向下传递,其具有与原始承诺相同的已解决/拒绝状态,但使用返回的值/对象解析/拒绝.
>通过返回一个promise,该promise将传递给方法链,其状态独立于原始promise.
因此,通过从.then()处理程序返回一个永远不会被解决且永不拒绝的promise,可以有效地取消Deferred / promise回调队列.这样的承诺可以从.then()处理程序的done处理程序(第一个参数)或其失败处理程序(第二个参数)中获得.使用.done(),. fail()或.always()方法无法实现相同的功能,这些方法无需修改即可返回原始的Deferred / promise.
抛出一个错误
从.then(),. done(),. fail(),. aways()或.progress()处理程序中抛出的未被捕获的错误将通过终止运行它的事件线程来终止方法链.
可以故意抛出错误,例如throw(‘故意错误’).
注意
应该注意,两种方法都只能抑制链式方法处理程序(或通过赋值实现的等价物).
无论采用哪种方法,任何已在抑制返回/错误表达式执行时启动的异步进程都将继续,并且任何相应的已完成/失败/始终/进度处理程序可能已触发.
内容总结
以上是互联网集市为您收集整理的javascript – jQuery延期:取消进度全部内容,希望文章能够帮你解决javascript – jQuery延期:取消进度所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。