浏览器的AJAX(XmlHttpRequest)超时长度

waj*_*jiw 17 ajax xmlhttprequest

我一直在网上试图找到一个直接的答案.有没有人知道浏览器的ajax请求的默认超时长度?如果它改变了版本?

mon*_*sur 22

根据规范,超时值默认为零,这意味着没有超时.但是,您可以在XHR.timeout属性上设置超时值; 该值以毫秒为单位.

资料来源:

http://www.w3.org/TR/2011/WD-XMLHttpRequest2-20110816/#the-timeout-attribute http://msdn.microsoft.com/en-us/library/cc304105(v=vs.85)的.aspx

  • 但是有一个潜在的超时,规范没有涵盖.从第二个链接:`如果设置的XMLHttpRequest超时值大于网络堆栈的超时值,网络堆栈将首先超时,并且不会引发ontimeout事件. (8认同)

Liv*_*viu 5

我认为浏览器没有 AJAX 超时,只有同步或异步请求;同步 - 首先冻结 JavaScript 执行,直到请求返回,异步 - 不会冻结 JavaScript 执行,它只是将请求从执行流中取出,如果您有回调函数,它将与正在运行的脚本并行执行该函数(类似于线程)

**sync flow:**

running JS script
     |
    ajax
(wait for response)
     |
execute callback 
     |
running JS script




 **async flow:**

 running JS script
     |
    ajax  --------------------
     |                       |
 running JS script       execute callback
Run Code Online (Sandbox Code Playgroud)

  • Chrome 似乎确实有超时。即使我将 ajax 调用超时设置为 900000(15 分钟),请求也会在长时间运行的请求恰好 1 分钟后超时,状态为“已取消”。 (2认同)