我们使用jquery的ajax,超时重试可以采用两种方式,一种是配置ajax的timeout的参数,另一种就是以setTimeout定时器的方式实现:

1)timeout参数配置方式

var xhr = $.ajax({
            type:'get',
            url: 'http://localhost:8080/user',
            data:{
                id: 1
            },
            timeout: 5000,          // 设置超时时间5秒
            dataType: "json",
            success: function(res) {
                if(res.success) {
                    // 业务处理
                }
            },
            error: function(err) {
                if(err.statusText == 'timeout') {
                    xhr.abort();    // 超时中断请求
                    // 这里可以重新执行请求
                }
            }
        }) 

2)setTimeout定时器方式

function retryCallback(){
    var xhr;

    // 设置5秒超时定时器
    var timer = setTimeout(function(){
        // 中断上一个请求
        xhr.abort();
        // 超时重试
        retryCallback();
    }, 5000)

    xhr = $.ajax({
        type:'get',
        url: 'http://localhost:8080/user',
        data:{
            id: 1
        },
        dataType: "json",
        success: function(res) {
            // 未超时则清除定时器
            clearTimeout(timer)
        }
    })
}

retryCallback()

超时重试(一)ajax的更多相关文章

  1. Volley超时重试机制

    基础用法 Volley为开发者提供了可配置的超时重试机制,我们在使用时只需要为我们的Request设置自定义的RetryPolicy即可. 参考设置代码如下: int DEFAULT_TIMEOUT_ ...

  2. dubbo超时重试和异常处理

    dubbo超时重试和异常处理 dubbo超时重试和异常处理 参考: https://www.cnblogs.com/ASPNET2008/p/7292472.html https://www.tuic ...

  3. dubbo的超时重试

    dubbo的超时分为服务端超时 SERVER_TIMEOUT 和客户端超时 CLIENT_TIMEOUT.本文讨论服务端超时的情形: 超时:consumer发送调用请求后,等待服务端的响应,若超过ti ...

  4. dobbo 服务配置详解(解决超时重试问题)

    <!-- reference method -->     <dubbo:reference interface="com.xx.XxxService">  ...

  5. Dubbo超时重试机制带来的数据重复问题

    Dubbo的超时重试机制为服务容错.服务稳定提供了比较好的框架支持,但是在一些比较特殊的网络环境下(网络传输慢,并发多)可能 由于服务响应慢,Dubbo自身的超时重试机制(服务端的处理时间超过了设定的 ...

  6. SpringCloud Feign 之 超时重试次数探究

    SpringCloud Feign 之 超时重试次数探究 上篇文章,我们对Feign的fallback有一个初步的体验,在这里我们回顾一下,Fallback主要是用来解决依赖的服务不可用或者调用服务失 ...

  7. 使用 Polly 实现复杂策略(超时重试)

    一.背景 第一次接触 Polly 还是在做某个微服务系统的时候,那时只会使用单一的超时策略与重试策略,更加高级的特性就没有再进行学习了.最近开为某个客户开发 PC 端的上位机的时候,客户有个需求,在发 ...

  8. 5.如何基于 dubbo 进行服务治理、服务降级、失败重试以及超时重试?

    作者:中华石杉 面试题 如何基于 dubbo 进行服务治理.服务降级.失败重试以及超时重试? 面试官心理分析 服务治理,这个问题如果问你,其实就是看看你有没有服务治理的思想,因为这个是做过复杂微服务的 ...

  9. 面试系列26 如何基于dubbo进行服务治理、服务降级、失败重试以及超时重试

    (1)服务治理 1)调用链路自动生成 一个大型的分布式系统,或者说是用现在流行的微服务架构来说吧,分布式系统由大量的服务组成.那么这些服务之间互相是如何调用的?调用链路是啥?说实话,几乎到后面没人搞的 ...

随机推荐

  1. Mysql内置功能《一》流程控制

    delimiter // CREATE PROCEDURE proc_if () BEGIN declare i int default 0; if i = 1 THEN SELECT 1; ELSE ...

  2. ARX添加新的图形对象到当前数据库空间ObjectARX PostCurrentSpace

    static Acad::ErrorStatus PostCurrentSpace(AcDbObjectId &objId,AcDbEntity *pEnt) { Acad::ErrorSta ...

  3. 【redis基础】

    基础知识 http://www.runoob.com/redis/redis-partitioning.html redis性能分析 https://www.cnblogs.com/mushroom/ ...

  4. windows系统作为客户端时,linux中本地yum源挂载时,如何同时挂载DVD1和DVD2?

    这里以CentOS6.5为例.他的镜像有两个DVD1和DVD2.DVD1中是系统和主要的安装包,DVD2中是剩下的安装包 当挂载时如果要同时挂载DVD1和DVD2.需要这样做: 1)在虚拟机的设置中选 ...

  5. mysql数据库表的基本操作sql语句总结

    1,命令行登录命令 mysql -h localhost -u root -p C:\Users\lenovo>mysql -u root -p Enter password: ***** We ...

  6. python3的enumerate函数

    enumerate() 函数用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中.

  7. ubuntu16.04 能启动mysql服务

    ubuntu16.04 后, 貌似mysqld在/etc/init.d下,直接执行会报mysqld不在服务中,因此开启mysql服务失败. 所以执行以下命令不能启动mysql服务: /etc/init ...

  8. 利用COOKIE保存历史浏览商品的一个简单思路

    <?php //如是COOKIE 里面不为空,则往里面增加一个商品ID if (!empty($_COOKIE['SHOP']['history'])){ //取得COOKIE里面的值,并用逗号 ...

  9. spring ThreadPoolTaskExecutor使用总结

    ThreadPoolTaskExecutor提供TaskDecorator可以实现类似ThreadPoolExecutor.afterExecute()类似功能 taskDecorator主要是对Ru ...

  10. VS2013下使用cjson

    想要在C++实现json文件的读取.因为中间也遇到过很简单的坑,为了增加记忆,对实现过程做一个记录. 本文采用的是静态链接库的方式: 1.先在github上下载源码, json源码下载地址 2.打开m ...