Why don't synchronous ajax calls in jquery sup

2019-02-14 20:29发布

I was reading here that synchronous ajax calls in jquery don't time out.

Is this a technical limitation, or just something the authors didn't feel like supporting? What actually happens under the table when an ajax call is synchronous?

3条回答
淡お忘
2楼-- · 2019-02-14 21:06

A synchronous AJAX call blocks until the request has been finished. Implementing a timeout is not possible for technical reasons, because the AJAX call would have to be executed later.

If an AJAX call is executed later, the function somehow has to implement a blocking feature, to stop the code from running further after the AJAX call, and execute it again after a timeout - not possible.

查看更多
Evening l夕情丶
3楼-- · 2019-02-14 21:07

Indeed, is something related to the nature of AJAX request, jQuery cannot modify this.

I think timeout should be implemented in the server side in those cases.

查看更多
Rolldiameter
4楼-- · 2019-02-14 21:23

The browser handles synchronous/asynchronous requests via the XMLHttpRequest API, but it does not have a built-in timeout feature. JQuery implements its own timeout in JavaScript on top of the browser XHR API.

Since a synchronous call blocks all running scripts, the JQuery timeout does not work. In theory, it seems like synchronous timeouts would be possible if they were implemented at the browser level, as opposed to the JS level.

查看更多
登录 后发表回答