超时重试ajax

Posted lay2017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超时重试ajax相关的知识,希望对你有一定的参考价值。

我们使用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的主要内容,如果未能解决你的问题,请参考以下文章

如何编写 Kotlin 口语代码同步重试直到超时或成功?

请求超时的 http 重试 (408)

增加 TCP 套接字超时与手动重试套接字连接之间有区别吗?

java客户端调用webservice时 连接超时知道是网络原因 ,如何重试如果不重试程序就死琐了,

jedis超时重试机制注意事项

python2中MySQLdb加入超时及其重试功能