可以同步(阻塞)ajax调用阻止浏览器的UI吗?

时间:2012-08-31 11:38:03

标签: javascript ajax

这个问题是面向jQuery的,但不一定是唯一的。

简短的问题:

可以同步ajax调用阻止正常按钮被点击吗?我的测试表明它没有发生,但也许其他浏览器会出现问题。

长问题:

在我提出的另一个问题how to block on ajax call (I want it to block)中,这些人说在某些情况下浏览器会阻止。

实际上甚至jQuery的docs都说: Note that synchronous requests may temporarily lock the browser, disabling any actions while the request is active.

我正在努力:
1。了解如何/为何会发生这种情况。
2。评估发生这种情况的可能性。

根据我的理解,这可能是不正确的:
我想如果我作为开发人员在ajax调用本身之前没有构建/更新UI,“封锁”javascript VM,从而延迟了UI构建/更新,那么“锁定”将发生在页面的UI中。是否正确?

1 个答案:

答案 0 :(得分:3)

是的,它会。当同步请求未完成时,浏览器会等待它返回。发生这种情况的概率是100%,但如果您的请求返回得足够快,则可能不那么明显。事实是,你不能指望快速返回的请求。

这就是ajax调用的重点。第一个 a 表示异步,表示“不阻止”。

由于ajax调用是异步的,因此您的代码可以在请求返回时的任何位置,这意味着您需要一种方法来在请求返回时处理响应。这就是您使用回调来处理响应的原因。

你为什么不试试?