javascript - 同步(阻塞)ajax 调用可以阻塞浏览器的用户界面吗?

标签 javascript ajax

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

简短的问题:

同步 ajax 调用可以阻止普通按钮被点击吗?我的测试表明它不会发生,但也许另一个浏览器会出现问题。

长问题:

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

其实连docs jQuery 说: 请注意,同步请求可能会暂时锁定浏览器,从而在请求处于事件状态时禁用任何操作。

我正在尝试:
<强>1。了解这种情况如何/为何会发生。
<强>2。评估这种情况发生的可能性。

根据我的理解,这可能是不正确的:
我想,如果我作为开发人员在 ajax 调用自身之前没有构建/更新 UI,页面的 UI 就会“锁定”,这会“阻止”javascript VM,从而延迟 UI 构建/更新。正确与否?

最佳答案

是的,会的。当同步请求未完成时,浏览器等待它返回。发生这种情况的可能性是 100%,但如果您的请求返回速度足够快,它可能不会那么引人注目。问题是,您不能指望请求会快速返回。

这就是 ajax 调用的意义所在。第一个 a 表示异步,意思是“不阻塞”。

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

你为什么不试试呢?

关于javascript - 同步(阻塞)ajax 调用可以阻塞浏览器的用户界面吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12214573/

相关文章:

javascript - 在文档范围内按键后调用组件函数 (React)

javascript - 如何在单击 Hyperlink1 打开的同一窗口中打开超链接 (2)

php - 通过 JQuery ajax.post 向 PHP 提交 JSON 数据

javascript - AJAX 不发布多字段表单

javascript - 改变 div 的使用 jquery 问题?

JavaScript : Encode byte [ ] array to base64

javascript - 无法进入异步(同步)函数/空结果的回调

Javascript 从加载的 img 中提取响应 header

java - Ajax servlet 发送-接收不起作用

javascript - 如何在 for 循环(javascript)内的 ajax 调用内传递变量?