本文介绍了有没有一种方法之一推迟失败后继续?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我处理数目不详的Ajax请求。该请求可能在404这将导致整个链条失败失败。
有没有办法后的一个延迟未能继续吗?
VAR deferreds = [];
//填写deferreds与一些Ajax请求。
$ .when.apply($,deferreds)
.done(函数(){
//处理DONE
}),失败(函数(){
//处理失败
//想修复/修复出现故障的递延,并继续以休息
});
解决方案
您必须创建自己的延迟的对象,等待对方推迟到成功或失败。
VAR myDeferred = $ .Deferred();
VAR origDeferred = $。阿贾克斯(...);
//如果请求是好的,我解决我的延期
origDeferred.done(函数(){
myDeferred.resolve.apply(这一点,参数);
});
//如果请求失败,我也解决我的推迟
origDeferred.fail(函数(){
myDeferred.resolve.apply(这一点,参数);
});
在这种情况下,你的延期将永远解决。
I'm handling an unknown number of ajax requests. The request could fail in a 404. This causes the whole chain to fail.
Is there a way to continue after one deferred fails?
var deferreds = [];
// fill deferreds with a number of ajax requests.
$.when.apply($, deferreds)
.done(function(){
// handle done
}).fail(function(){
// handle fail
// would like to fix/resolve the failed deferred and continue with the rest
});
解决方案
You have to create your own deferred object, waiting for the other deferred to succeed or fail.
var myDeferred = $.Deferred();
var origDeferred = $.ajax(...);
// if request is ok, i resolve my deferred
origDeferred.done(function() {
myDeferred.resolve.apply(this, arguments);
});
// if request failed, i also resolve my deferred
origDeferred.fail(function() {
myDeferred.resolve.apply(this, arguments);
});
In that case your deferred will always be resolved.
这篇关于有没有一种方法之一推迟失败后继续?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!