【发布时间】:2011-12-16 17:16:41
【问题描述】:
我正在阅读here,jquery 中的同步 ajax 调用不会超时。
这是技术限制,还是作者不想支持的东西?当 ajax 调用同步时,实际发生了什么?
【问题讨论】:
-
基本上,在同步ajax请求期间,浏览器被阻塞,浏览器被阻塞时无法执行javascript。正因为如此,jQuery 无法在设置的超时后中止 ajax 请求,因为 jQuery 是 javascript,并且在浏览器被阻止时无法执行 javascript。这是同步 ajax 的主要缺陷。
-
@KevinB - 这就是我一直在寻找的答案,我也巧合地发现了它。我认为关键是浏览器处理同步/异步而不是超时。如果浏览器有超时作为 XHR api 的一部分,这不会是一个问题
-
如果您无法摆脱同步 ajax,第二个最佳解决方案是在服务器端实现超时,这样如果时间超过 x 秒,则返回 500 标头。