Javascript-Ajax:设置超时是否总是会覆盖浏览器的超时吗?

在纯JavaScript中执行Ajax请求时,似乎可以设置超时值.查看How to detect timeout on an AJAX (XmlHttpRequest) call in the browser?

当使用jQuery的ajax实现时,&我假设其他类似的框架.参见Set timeout for ajax (jQuery)

浏览器的认超时时间似乎含糊不清.参见Browser Timeouts

因此,可能会“嘿,我要为我的ajax请求设置一个超时,以便所有用户都具有相同的超时”.

但是,接下来的问题是:在所有情况下,它实际上是否会覆盖浏览器的超时?

当我说“所有”情况时,例如,是指浏览器超时值小于您的ajax请求超时值.

我怀疑不是.

而且我还怀疑,最好的做法是始终使用超时错误处理程序,以确保无论发生什么情况,您都可以显示一条相关的消息,这将为您的支持团队节省大量时间,&钱给您的公司.参见Determine if $.ajax error is a timeout

提前致谢

解决方法:

这是一个有趣的问题,我在Chrome 59.0和Firefox 54.0中使用10分钟延迟服务作为后端进行了一些实验.

经过一些测试,将客户端的超时设置为10分钟后,两个浏览器在300秒(5分钟)后都出现了文本状态为“错误”的错误响应,因此至少对于这两个浏览器而言,无法覆盖内部超时值.对于市场上其余的浏览器,我假设行为相同.

我的测试脚本:(与原始JavaScript相似的结果)

var st = new Date();  
  $.ajax({
      url: "https//mysitewith10minresponse.com/foobar",
      type: "GET",
      dataType: "json",
      timeout: 600000, 
      success: function(response) { console.log(response); },
      error: function(jqXHR, textStatus, errorThrown) {           
          st = (new Date() - st)/1000;
          alert("Text Status " + textStatus + ", diff: " + st + " seconds");          
      }
  });

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...