Official documentation在jQuery上没有提到它。
可能的混淆:我知道我可以使用ajax来控制超时,但我的问题不同。
方案:
我正在使用post从后端获取数据,我知道这需要很长时间(有时非常长)才能加载。
问题:
我的javascript请求是否会超时或总是等到后端加载,即使需要几分钟?
答案 0 :(得分:2)
HTTP请求超时是服务器端配置,而不是客户端配置。通过Jquery代码提交的请求也不例外。 您可能希望针对上一个请求的返回代码进行测试,并将异常处理添加到您的代码中(例如重新提交请求)
始终检查响应代码,常见的策略是rety。 https://www.lifewire.com/g00/troubleshooting-network-error-messages-4102727
答案 1 :(得分:2)
默认情况下,请求的超时由浏览器和接收服务器控制,以先取消请求为准。我相信大多数浏览器默认都有60秒超时。服务器可以是任意值。
我的javascript请求是否会超时,还是会一直等到后端加载,即使需要几分钟?
因此,答案是,您的请求将在任意点超时。如果要控制强制用户等待请求的时间,则可以使用timeout
调用的$.ajax
属性专门设置此时间。这将覆盖浏览器或服务器上设置的任何超时。
15秒应该绰绰有余。如果请求的使用时间超过了我建议您更改用于生成响应的模式。
答案 2 :(得分:2)
Jquery使用本机XMLHttpRequest
模块发出请求。
XMLHttpRequest.timeout属性是一个unsigned long,表示请求在自动终止之前可以采用的毫秒数。默认值为0,表示没有超时。
读取jquery库的源代码时,ajax方法没有设置超时,因此可以保存请求不会超时。
但是你可以在jquery和本机模块中显式设置超时。
这并不意味着您的请求不会超时,因为服务器通常会执行保释超时策略,通常是服务器端的长响应超时。您可以将分块或流媒体视为一种安全便捷的解决方案。
github jquery ajax来源:
https://github.com/jquery/jquery/tree/2d4f53416e5f74fa98e0c1d66b6f3c285a12f0ce/src/ajax