gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 02:26:08 24 4
gpt4 key购买 nike

似乎可以在纯 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 分钟)后在两种浏览器中都收到了文本状态为“错误”的错误响应,所以至少对于这两种浏览器而言 它不是可以覆盖内部超时值。我假设市场上其他浏览器的行为相同。

我的测试脚本:(与 vanilla 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");
}
});

关于javascript - Ajax:设置超时是否总是覆盖浏览器的超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24526201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com