代码之家  ›  专栏  ›  技术社区  ›  Joe D

jQuery.ajax()中的“async:false”有什么作用?

  •  216
  • Joe D  · 技术社区  · 16 年前

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

    在什么情况下,我希望显式设置 async false ,它是否与防止页面上的其他事件触发有关?

    7 回复  |  直到 12 年前
        1
  •  320
  •   Community Mohan Dere    9 年前

    这跟我有什么关系吗 阻止页面上的其他事件

    将async设置为false意味着在调用函数中的下一条语句之前,必须先完成正在调用的语句。如果设置async:true,则该语句将开始执行,并将调用下一条语句,而不管该async语句是否已完成。

    有关详细信息,请参阅: jQuery ajax success anonymous function scope

        2
  •  132
  •   Nathan Tuggy TonyLuigiC    9 年前
    • async:false 停顿 . (其他代码
    • async:true . (没有什么会被暂停。其他代码是 .)

        3
  •  29
  •   Katia    11 年前

    Async:False 将保留rest代码的执行。一旦得到ajax的响应,只有到那时,其余的代码才会执行。

        4
  •  19
  •   John Millikin    16 年前

    如果禁用异步检索,脚本将阻塞,直到请求完成。它对于以已知顺序执行某些请求序列很有用,尽管我发现异步回调更干净。

        5
  •  12
  •   Harsh Gupta    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;
    })();
    

    上面的示例清楚地解释了 异步:false

    网址 ,只有在那之后 返回php_数据; 被称为

        6
  •  11
  •   Hariprasad jasmine sharma    12 年前

    一个用例是创建一个 ajax

     $(window).unload(
            function(){
                $.ajax({
                url: 'your url',
                global: false,
                type: 'POST',
                data: {},
                async: false, //blocks window close
                success: function() {}
            });
        });
    
        7
  •  8
  •   i474    10 年前

    从…起

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

    workers外部的同步XMLHttpRequest正在从web平台中删除,因为它对最终用户的体验有不利影响(这是一个耗时多年的漫长过程。)当JavaScript全局环境是文档环境时,开发人员不得为异步参数传递false。强烈鼓励用户代理对开发人员工具中的此类使用发出警告,并在出现InvalidAccessError异常时尝试抛出该异常。