xhr 设置超时 timeout

Posted

tags:

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

参考技术A 有个同事使用了axios设置了Xhr的超时时间,她说默认的是30秒。

在 XMLHttpRequest 官方文档 中

在 XMLHttpRequest Level 2 使用指南 中

在 web超时配置总结
值得注意的一点是,超时时间的计算,是从调用xhr.send()开始,至xhr.loadend触发为止的这段时间。即时xhr.timeout的设置是在xhr.send()之后,timeout的计时起点仍为调用xhr.send()的时刻。

其实会了XMLHttpRequest的超时设置,其他前端的框架啊、工具啊的超时设置都不再是问题,这就有点万法归宗的意思。因为我们常用的jQuery.ajax()方法实际上就是对浏览器提供的XMLHttpRequest对象的封装。而又有很多其他框架或者工具的请求模块是对jQuery.ajax()的封装。说到底,都是依赖的XMLHttpRequest对象。因此掌握了XMLHttpRequest,其他都很好学会。
依jQuery.ajax()的超时设置为例:

另外还有设置nginx代理超时设置、服务端超时设置。

更多参考 你真的会使用XMLHttpRequest吗?

ajax设置自定义请求头

1,

$.ajax({
    url:apiUrl,
    type:"get",
    timeout : 5000, //超时时间设置,单位毫秒
    dataType: "json",
    beforeSend: function(xhr) {
        xhr.setRequestHeader("Authorization", "Bearer "+obj.data);
        xhr.setRequestHeader("Accept", "application/json");
    },
    success:function(obj){
        dealApiInterfaceResult(resourceId, obj);
    }
})

2,

$.ajax({
    url:apiUrl,
    type:"get",
    timeout : 5000, //超时时间设置,单位毫秒
    dataType: "json",
    headers: {
             ‘Authorization‘:"Bearer "+obj.data,
             ‘Accept‘:"application/json"
         },
    success:function(obj){
        dealApiInterfaceResult(resourceId, obj);
    }
})

 

以上是关于xhr 设置超时 timeout的主要内容,如果未能解决你的问题,请参考以下文章

使用Promise.race实现超时机制取消XHR请求

ajax设置自定义请求头

nginx参数配置待续

2-4-运维必备核心技能-nginx实现web服务配置

在 jQuery 中停止 XHR 请求

多个 AJAX 请求相互延迟