大佬教程收集整理的这篇文章主要介绍了jQuery ajax延迟回调命令,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到的问题是我的一些ajax请求可能会失败,但我需要执行相同的代码,无论是失败还是没有失败.
很难准确解释,所以我做了这个小提琴,以帮助显示我遇到的问题.
http://jsfiddle.net/zZsxV/
var a1 = $.Deferred(); var a2 = $.Deferred(); var a3 = $.Deferred(); a1.done(function() { $('body').append('a1 done<br />'); }).fail(function() { $('body').append('a1 fail<br />'); }).always(function() { $('body').append('a1 always<br />'); }); a2.done(function() { $('body').append('a2 done<br />'); }).fail(function() { $('body').append('a2 fail<br />'); }).always(function() { $('body').append('a2 always<br />'); }); a3.done(function() { $('body').append('a3 done<br />'); }).fail(function() { $('body').append('a3 fail<br />'); }).always(function() { $('body').append('a3 always<br />'); }); var def = $.when(a1,a2,a3); def.always(function() { $('body').append('defer always <-- Should be after all<br />'); }); setTimeout(function() { a1.resolve(); },5000); setTimeout(function() { a2.reject(); },1000); setTimeout(function() { a3.resolve(); },3000);
更多信息需要帮助请告诉我,我会在我回来后添加它.提前致谢.
编辑
我明白发生了什么.我只知道如何避免这个问题.我尝试使用.then同样的结果.一旦一个请求被拒绝,它就会在等待其他回调之前触发失败回调.
var custom_when = function() { var args = $.makeArray(arguments); var callBACk = args.pop(); var all = []; $.each(args,function(index,def) { def.always(function() { var idx = all.indexOf(def); if (idx !== -1) { all.splice(idx,1); } if (!all.length) { callBACk(); } }); all.push(def); }); };
你可以像这样使用它:
custom_when(a1,a3,function() { // do some stuff. });
以上是大佬教程为你收集整理的jQuery ajax延迟回调命令全部内容,希望文章能够帮你解决jQuery ajax延迟回调命令所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。