在jQuery.ajax()中做什么“async:false”?
具体来说,它与默认( async: true
)有什么不同?
在什么情况下,我想显式设置async
为false
,是否有阻止页面上的其他事件发生的事情?
这是否与防止页面上的其他事件发射有关?
是。
将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() {} }); });