当前位置: 首页 > 面试题库 >

失败后自动重试AJAX请求

陈毅
2023-03-14
问题内容

我已经看到您可以指定如果ajax请求失败通常要做什么,是否可以让它在某种循环中重试,以便它在停止之前尝试至少x次?我以前使用过此代码:

$.ajaxSetup({
  "error":function() {   
    alert("error");
}});

这将适用于所有AJAX请求(如果我输入错了,请纠正我)。

我想做这样的事情:

$.ajaxSetup({
  "error":function() {   
    $(this).ajax;
}});

这行得通吗?甚至更好:这是正确的方法吗?我会将重试包装在计数系统中,以便不会无限重试。在我的应用程序中,十分之九会正常工作,但是我经常与之交互的API之一有时会返回错误。

任何建议都会有所帮助,谢谢!


问题答案:

您可以尝试如下操作:

    var attempts;
    function doAjaxRequest() {
        attempts = 0;
        doAjaxRequestLoop();
    }

    function doAjaxRequestLoop() {
        attempts += 1;
        if (attempts > 10) {
            alert('too many attempts.');
            return;
        }

        $.ajax({ // do your request
            error: function (error) {
                doAjaxRequestLoop();
            }
        });
    }

</script>

尽管我可能建议反对。如果请求失败,则可能要找出失败的原因。如果用户失去了互联网连接怎么办?任何进一步的尝试都可能再次失败,为什么要重试?



 类似资料:
  • 碰到一个问题是这样的,有个老项目,用的jquery进行发送请求,因为环境网络不稳定之类的,会有偶然性的请求失败,SSL连接失败,没有状态码,只要重新发送就能正常了。所以期望能做到如果请求响应失败,且没有状态码时,请求能否每隔半秒自动重试3次。如下代码,在重试期间fail、error、always等回调逻辑不会被触发。 试过使用 $.ajaxPrefilter 和 $.ajaxSetup 对erro

  • 本文向大家介绍写一个方法实现promise失败后自动重试相关面试题,主要包含被问及写一个方法实现promise失败后自动重试时的应答技巧和注意事项,需要的朋友参考一下 1.首先来个封装获取数据的 Promise方法 function getData(){ let p = new Promise((resolve,reject)=>{ setTimeout(()=>{ // 定义一个随机数 let

  • 问题内容: 我有多个Ajax请求每分钟都有一些请求数据,而其他请求是由用户通过ui发起的。 该请求可能由于身份验证失败而失败。我设置了一个全局方法来捕获任何失败的请求。 发现错误后,我将重置授权。重置授权是可行的,但是用户必须手动重新启动ajax调用(通过ui)。 如何使用最初发送的jqxhr重新发送失败的请求? (我将jQuery用于Ajax) 问题答案: 发现此帖子表明可以很好地解决此问题。

  • 请求: 主机:Tempuri.org用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:37.0)Gecko/20100101 Firefox/37.0接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8接受-语言:en-US,en;q=0.5接受-编码:gzip,deflate来源:http

  • 问题内容: IE中的以下AJAX调用失败。 错误函数返回 没有向服务器发出请求,因此我认为JSON没有问题。 已修复,请参阅#1351389 问题答案: 固定,我将content-type从更改为just plain 。 我讨厌IE :) 另外,为了避免IE超级缓存,请尝试以下操作: 这样,每个请求都是IE获得:D的新网址

  • 问题内容: 我最近升级到了Cordova 5.0(和Cordova Android 4.0),从那时起,我的应用程序无法再访问外部资源。 我仍然在config.xml中(如前),并且仍然在AndroidManifest.xml中(如前),但是ajax调用被拒绝,没有任何解释(“ textStatus”参数为“错误”,“ errorThrown”参数为null,并且xhr.state()返回“已拒绝