美文网首页
xhr 设置超时 timeout

xhr 设置超时 timeout

作者: 合肥黑 | 来源:发表于2019-03-11 14:24 被阅读0次

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

    XMLHttpRequest 官方文档

    XMLHttpRequest.timeout 是一个无符号长整型数,代表着一个请求在被自动终止前所消耗的毫秒数。默认值为 0,意味着没有超时。超时并不应该用在一个 document environment 中的同步 XMLHttpRequests 请求中,否则将会抛出一个 InvalidAccessError 类型的错误。当超时发生, timeout 事件将会被触发。

    XMLHttpRequest Level 2 使用指南

    有时,ajax操作很耗时,而且无法预知要花多少时间。如果网速很慢,用户可能要等很久。新版本的XMLHttpRequest对象,增加了timeout属性,可以设置HTTP请求的时限。xhr.timeout = 3000;上面的语句,将最长等待时间设为3000毫秒。过了这个时限,就自动停止HTTP请求。与之配套的还有一个timeout事件,用来指定回调函数。

      xhr.ontimeout = function(event){
        alert('请求超时!');
      }
    

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

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

        $.ajax({
            url: "test.html",
            error: function(){
                // will fire when timeout is reached
            },
            success: function(){
                // do something
            },
            timeout: 60*1000 // sets timeout to 1 minute
        });
    

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

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

    相关文章

      网友评论

          本文标题:xhr 设置超时 timeout

          本文链接:https://www.haomeiwen.com/subject/cetbpqtx.html