当前位置: 首页 > 面试题库 >

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

年良骏
2023-03-14
问题内容

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

简短的问题:

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

长的问题:

在我询问的另一个问题中,如何阻止ajax调用(我希望它阻止),这些家伙说浏览器在某些情况下会阻止。

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

我正在尝试:
1.了解发生这种情况的方式/原因。
2.评估发生这种情况的可能性。

根据我的理解,这可能是不正确的:
我想如果我(作为开发人员)没有在ajax调用本身之前“构建”或“更新” UI(会“阻止” JavaScript
VM)的情况下,页面UI就会发生“锁定”,因此延迟了用户界面的构建/更新。正确与否?


问题答案:

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

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

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

你为什么不尝试呢?



 类似资料:
  • 问题内容: 我有这样的代码: 当从任何代码位置调用此方法都很好,但是当我在promise中使用它时(见下文),它总是被浏览器阻止。有什么建议? 承诺是有角度的。 问题答案: 响应您从Ajax请求获得HTTP响应而触发Promise。这不是用户触发的事件,因此会阻止弹出窗口。使用用户给您的窗口,而不是创建一个新窗口。

  • 问题内容: Ajax使用回调,因为它是同步的。 我希望对远程URL块的调用直到出现一些答案为止 ,就像在Ajax中一样,但是没有异步部分,或者我要说要进行JAX调用。 是否有任何技术可以使以下事情发生(使用JQuery)(…使用JQuery或其他解决方案): 我只是想知道-想学习。 实际上,有时会阻塞直到回复合适为止。我并不是说要浏览器阻止,而只是脚本运行时。 问题答案: 您可以在使用jQuery

  • 问题内容: 加载页面后,我将对php脚本执行Ajax调用,这将更新服务器。但是,此脚本有时可能需要一分钟才能完成,并且在脚本运行时,我无法执行我需要处理的其他Ajax调用- 即第一个Ajax调用不应中断其他Ajax调用。任何想法如何做到这一点? 首次Ajax通话: 第二个Ajax调用(用户触发的调用): 问题答案: 腺苷的上述评论是正确的。 “在PHP中,一次只能在一个会话上运行一个脚本,以免覆盖

  • 通常情况下,您使用selenium来自动化测试用例,在测试用例运行完毕后,浏览器关闭。 然而,我尝试使用selenium webdriver编写特定任务的脚本,例如登录到特定页面,但浏览器在登录后应保持打开状态。 我开发了门户,这样,如果我早上开始工作,我就不必登录所有的后端,我只需要登录一次我的门户,从那里我就可以触发我需要的一切。 我这样做是为了登录到typo3后端(片段): 您可以看到,我在

  • 问题内容: 我想做的是将加载图像添加到div(以便用户知道正在加载某些内容),然后调用jquery ajax函数,该函数设置为“ async:false”。这是我的代码: 问题在于,浏览器将锁定,并且在ajax调用完成后才追加加载图像,这当然是没有用的。Firefox是唯一实际附加加载图像的浏览器。IE,Chrome和Safari请勿附加正在加载的图片。 我知道浏览器锁定会发生,因为async设置

  • 本文向大家介绍在vue中阻止浏览器后退的实例,包括了在vue中阻止浏览器后退的实例的使用技巧和注意事项,需要的朋友参考一下 如下所示: vue阻止浏览器后退按钮与js相同,同样没有脱离原生的js 以上这篇在vue中阻止浏览器后退的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。