本文介绍了有没有一种方法之一推迟失败后继续?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我处理数目不详的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.

这篇关于有没有一种方法之一推迟失败后继续?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-24 17:17