Ajax的同步和异步调用

Posted 包仔饭

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ajax的同步和异步调用相关的知识,希望对你有一定的参考价值。

jquery的async:false,这个属性 
默认是true:异步,false:同步。

$.ajax({ 

        type: "post", 

       url: "path", 

       cache:false, 

       async:false, 

        dataType: ($.browser.msie) ? "text" : "xml", 

         success: function(xmlobj){ 

        } 

});

有了这个属性可以相对的减少代码运行书序问题,但是如果用的太多,页面假死次数太多。这样反而导致用户体验不佳~!

在这里,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)例:

$.ajax({  

          type:"POST", 

         url:"Venue.aspx?act=init", 

           dataType:"html", 

          success:function(result){   //function1()

             f1(); 

             f2(); 

        } 

         failure:function (result) {  

            alert(‘Failed‘);  

         }, 

  } 

  function2(); 

在上例中,当ajax块发出请求后,他将停留function1(),等待server端的返回,但同时(在这个等待过程中),前台会去执行function2(),也就是说,在这个时候出现两个线程,我们这里暂且说为function1() 和function2()。

          当把asyn设为false时,这时ajax的请求时同步的,也就是说,这个时候ajax块发出请求后,他会等待在function1()这个地方,不会去执行function2(),知道function1()部分执行完毕。


以上是关于Ajax的同步和异步调用的主要内容,如果未能解决你的问题,请参考以下文章

同步异步的概念(ajax是异步,C#是同步)

ajax中的async属性值之同步和异步及同步和异步区别

整理ajax同步异步请求

在浏览器开发工具中检查 ajax 调用是同步的还是异步的

AJAX中同步和异步的区别和使用场景

vue同步组件和异步组件的区别