具体来说,它与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() {}
        });
    });
从
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;
})();
上面的例子清楚地解释了async:false的用法
通过将其设置为false,我们确保一旦从url中检索数据,只有在返回php_data之后; 叫做