`
uule
  • 浏览: 6305477 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

Ajax请求是否可以实现同步

阅读更多

Ajax请求是否可以实现同步

 

当JS代码加载到当前AJAX的时候会把页面里所有的代码停止加载,页面出现假死状态,当这个AJAX执行完毕后才会继续运行其他代码页面,假死状态解除。 

 

$.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()部分执行完毕。

 

 

 

分享到:
评论
1 楼 LovingBaby 2018-12-01  
胡说,javascript 运行时是单线程的,event loop 了解一下!

相关推荐

Global site tag (gtag.js) - Google Analytics