Ajax中的async

来源:互联网 发布:深圳市软件协会电话 编辑:程序博客网 时间:2024/06/05 18:08
 Ajax中的async  

2012-08-27 17:17:49|  分类:ajax |  标签:|举报|字号 订阅

var temp;
$.ajax({
   async: false,
   type : "POST",
   url : defaultPostData.url,
   dataType : 'json',
   success : function(data) {
      temp=data;
   }
});
alert(temp);

async的默认设置为true,所有请求均为异步请求。若要将其设置为false,则所有的请求均为同步请求,在没有返回值之前,alert(temp)是不会执行的。

注意,同步请求将锁住浏览器,用户其它操作必须等待请求完成才可以执行。

 

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

  1. $.ajax({   
  2.            type:"POST" 
  3.       
  4.      url:"Venue.aspx?act=init" 
  5.            dataType:"html" 
  6.            success:function(result){   //function1()  
  7.               f1();  
  8.               f2();  
  9.             
  10.             failure:function (result)   
  11.                alert('Failed');   
  12.            },  
  13.     
  14.   function2(); 

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

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

          注:success中的方法f1(),f2()一般(即f1(),f2()不包括ajax块时)不会异步执行,就是说f2的执行是以f1()为前提的。

 

0 0
原创粉丝点击