具体来说,它与default(async: true)有何不同?
在什么情况下我会想明确的设置async到false,并且它有一些做以防止页面上的其他事件烧制而成?
Sea*_*ira 278
是否与阻止页面上的其他事件发生有关?
是.
将async设置为false意味着您调用的语句必须在函数中的下一个语句被调用之前完成.如果设置async:true,则该语句将开始执行,并且无论异步语句是否已完成,都将调用下一个语句.
有关更多见解请参阅: jQuery ajax成功匿名函数范围
夏期劇*_*期劇場 111
async:false=代码已暂停.(等待此完成的其他代码.)async:true=代码继续.(没有任何内容被暂停.其他代码没有等待.)就这么简单.
小智 9
一个用例是ajax在用户关闭窗口或离开页面之前进行呼叫.这就像删除数据库中的一些临时记录,然后用户可以导航到另一个站点或关闭浏览器.
$(window).unload(
function(){
$.ajax({
url: 'your url',
global: false,
type: 'POST',
data: {},
async: false, //blocks window close
success: function() {}
});
});
Run Code Online (Sandbox Code Playgroud)
从
https://xhr.spec.whatwg.org/#synchronous-flag
工作人员之外的同步XMLHttpRequest正在从Web平台中删除,因为它对最终用户的体验有不利影响.(这是一个需要很多年的漫长过程.)当JavaScript全局环境是文档环境时,开发人员不得为async参数传递false.强烈建议用户代理在开发人员工具中警告这种用法,并尝试在发生时抛出InvalidAccessError异常.未来的方向是仅允许工作线程中的XMLHttpRequests.该消息旨在警告该效果.
小智 8
将async设置为false意味着ajax请求之后的指令必须等待请求完成.下面是一个必须将async设置为false的情况,以使代码正常工作.
var phpData = (function get_php_data() {
var php_data;
$.ajax({
url: "http://somesite/v1/api/get_php_data",
async: false,
//very important: else php_data will be returned even before we get Json from the url
dataType: 'json',
success: function (json) {
php_data = json;
}
});
return php_data;
})();
Run Code Online (Sandbox Code Playgroud)
上面的例子清楚地解释了async:false的用法
通过将其设置为false,我们确保一旦从url中检索数据,只有在返回php_data之后; 叫做
| 归档时间: |
|
| 查看次数: |
497426 次 |
| 最近记录: |