为什么设置了timeout的JQuery Ajax请求还是没超时?
我在用JQuery的$.ajax发请求时设置了timeout: 2000,但实际测试发现请求超过3秒后还是继续执行了,甚至没有触发error回调。之前试过把timeout改成1000都试过,但问题依旧。
代码大概是这样写的:
$.ajax({
url: '/slow-endpoint',
timeout: 2000,
success: function() {
console.log('成功了');
},
error: function(jqXHR, textStatus) {
if (textStatus === 'timeout') {
console.log('这里没看到超时日志');
}
}
});
用浏览器开发者工具看请求确实花了5秒才返回,但success回调正常执行了,完全没有触发超时处理逻辑。是不是哪里配置错了?
async: true看看,虽然默认就是异步,但有些环境可能会有问题。另外,确保你用的 jQuery 版本不是太老,旧版本可能存在 bug。如果还不行,直接用原生 fetch 写一个兜底超时逻辑,应该能用:
熬夜写代码真累,但这办法应该靠谱。