在jquery ajax中async:false和async:true有什么区别?

Bru*_*_JL 38 ajax jquery asynchronous

在jquery ajax中有一个参数

$.ajax({async: true, ...});
Run Code Online (Sandbox Code Playgroud)

将值设置为true和之间有什么区别false

Nid*_*nan 74

在浏览器传递给其他代码之前需要完成ajax请求时,将async设置为false:

<script>
    // ...
    $.ajax(... async: false ...); // Hey browser! first complete this request, 
                                  // then go for other codes

    $.ajax(...); // Executed after the completion of the previous async:false request.
</script>
Run Code Online (Sandbox Code Playgroud)

By default, the$ .ajaxrequest in jQuery is set to asynchronous.变量名称为async,值设置为true.当我第一次了解它时,这给我带来了一些困惑,所以让我们来看看它.

同步(async:false) - 脚本停止并等待服务器在继续之前发送回复.在某些情况下,同步Ajax是强制性的.

在标准Web应用程序中,客户与服务器之间的交互是同步的.这意味着必须在另一个之后发生.如果客户单击链接,则会将请求发送到服务器,然后服务器将结果发回.

由于请求丢失和挂起浏览器的危险,不建议在(onbefore)卸载事件处理程序之外的任何内容使用同步javascript,但如果您需要先从服务器收到回复,然后才能允许用户导航从页面,同步Javascript不仅是您的最佳选择.

$.ajax({
         url: "file.php",
         type: "POST",
         async: false,
         success: function(data) {
                // .....
         }
      });
Run Code Online (Sandbox Code Playgroud)

Asynchronous(async:true) - 脚本允许页面继续处理的地方,并在脚本到达时处理回复.如果在请求和/或文件传输中出现任何问题,您的程序仍然能够识别问题并从中恢复.异步处理可以避免在从服务器进行检索时发生延迟,因为访问者可以继续与网页进行交互,并且处理所请求的信息将在响应更新页面时进行处理.

$.ajax({
         url: "file.php",
         type: "POST",
         async: true,
         success: function(data) {
                    // .....
         }
       });
Run Code Online (Sandbox Code Playgroud)

另外看看这篇文章

异步和同步AJAX调用


ale*_*lex 6

将其设置为false阻止主线程(负责执行JavaScript,渲染屏幕等)并等待XHR完成.

这几乎总是一个糟糕的主意.用户不喜欢无响应的UI.