ajax 自动重试,重试失败jQuery.ajax请求

我需要创建一个函数,重试失败的ajax请求,直到给定的限制,但我需要确保只有在超过最大重试次数时才会拒绝承诺,如下所示:重试失败jQuery.ajax请求

function my_ajax(...) { ... }

// then I use it this way

return $.when(my_ajax('foo.json'), my_ajax('bar.json'))

为了与jQuery.when工作,只有一个承诺应当返还的my_ajax,当内部jQuery.ajax解决这应该可以解决,只有当最大重试作出拒绝。

我所做的代码是这样的:

function do_ajax(args, dfd, attempt) {

dfd || (dfd = $.Deferred());

attempt || (attempt = 1);

$.ajax(args).then(dfd.resolve, function(xhr, text_status, error_thrown) {

console.error(/* something useful */);

attempt++;

if(attempt > 3) {

dfd.reject(xhr, text_status, error_thrown);

} else {

do_ajax(args, dfd, attempt);

}

});

return dfd.promise();

}

// in some random code

return $.when(do_ajax({url:'foo.json'}), do_ajax({url:'bar.json'});

这对我的作品*,但它是一种很难理解。问题是:是否有更好的(并且更容易阅读)的方式来做到这一点?

* - 其实我没有测试过有时会失败,但是当第一个ajax请求成功时我工作的很好。

+0

可能的[使用jQuery失败时重试AJAX请求的最佳方式是什么?](http ://stackoverflow.com/questions/10024469/whats-the-best-way-to-retry-an-ajax-request-on-failure-using-jquery) –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值