在jQuery.ajax()中做什么“async:false”?

具体来说,它与默认( async: true )有什么不同?

在什么情况下,我想显式设置asyncfalse ,是否有阻止页面上的其他事件发生的事情?

这是否与防止页面上的其他事件发射有关?

是。

将asynchronous设置为false意味着您调用的语句必须先完成才能调用函数中的下一个语句。 如果设置async:true,那么该语句将开始执行,并且将调用下一个语句,而不pipeasynchronous语句是否已经完成。

有关更多见解,请参阅: jQuery ajax成功匿名函数的作用域

  • async:false =代码已暂停 。 (其他代码正在等待这个完成。)
  • async:true =代码继续 。 (没有暂停,其他代码不在等待 。)

像这样简单。

Async:False将执行其他代码。 一旦你得到了Ajax的响应,只有这样,其余的代码才会执行​​。

如果禁用asynchronous检索,则脚本将阻塞,直到请求完成。 尽pipe我发现asynchronouscallback更加清晰,但是按照已知的顺序执行一系列请求是很有用的。

https://xhr.spec.whatwg.org/#synchronous-flag

工作人员之外的同步XMLHttpRequest正在从Web平台中移除,因为它对最终用户的体验有不利的影响。 (这是一个漫长的过程,需要很多年的时间。)当JavaScript全局环境是一个文档环境时,开发人员不能为asynchronousparameter passing错误。 强烈build议用户代理在开发人员工具中警告这种用法,并且可能会尝试在发生InvalidAccessErrorexception时抛出exception。 未来的方向是只允许工作线程中的XMLHttpRequests。 该信息旨在成为这方面的警告。

一个用例是在用户closures窗口或离开页面之前进行ajax调用。 这就像删除数据库中的一些临时logging,然后用户可以导航到另一个站点或closures浏览器。

  $(window).unload( function(){ $.ajax({ url: 'your url', global: false, type: 'POST', data: {}, async: false, //blocks window close success: function() {} }); });