菜单

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

2018年11月15日 - Ajax

Ajax同步和异步的区分

当上例中,当ajax块发出请求后,他拿停留function1(),等待server端的回到,但同时(在这等待历程中),前台会失去履行function2()。
二、async值为false (同步)
当行时AJAX的时会停止实施后的JS代码,直到AJAX执行完毕后常,才会继续执行后面的JS代码。
例如

    所有设想赢得xmlhttp返回值必须用一块,异步无法获得返回值。

万一是共同(false),返回值是true或false,因为执行完send后,开始实践onreadystatechange,程序会等到onreadystatechange都尽完毕,取得responseText后才会继续执行下一样漫漫语句,所以returnValue一定有价。
若果是异步(true),返回值一定是null,因为程序执行完send后不等xmlhttp的响应,而继续执行下一致长语句,所以returnValue还无来的及变化就已返回null了。
所有设想博得xmlhttp返回值必须用联合,异步无法得到返回值。
一头异步使用xmlhttp池时犹使顾:取得xmlhttp时只能新建xmlhttp,不能够从池塘中取出就用了之xmlhttp,因为吃运用过的xmlhttp的readyState为4,所以并异步都见面send但不履onreadystatechange。

   
如果是异步(true),返回值一定是null,因为程序执行完send后不同xmlhttp的响应,而继续执行下一致长语句,所以returnValue还没有来的及变化就已经回到null了。

$.ajax({  
     type:"POST", 
     url:"Venue.aspx?act=init", 
      dataType:"html", 
     success:function(result){  //function1()
       f1(); 
       f2();  
    } 
     failure:function (result) {  
      alert('Failed');  
     }, 
 } 
 function2();

Java

Java
xmlHttpReq.open("GET",url,true);//异步方式
  xmlHttpReq.onreadystatechange = showResult; //showResult是回调函数名
  xmlHttpReq.send(null);
function showResult(){  
  if(xmlHttpReq.readyState == 4){   
   if(xmlHttpReq.status == 200){
   ******
   }
  }
}
Java
xmlHttpReq.open("GET",url,false);//同步方式  
      xmlHttpReq.send(null);  
      showResult(); //showResult虽然是回调函数名但是具体用法不一样~  
function showResult(){   
       //if(xmlHttpReq.readyState == 4){  这里就不用了,直接dosomething吧~  
        //if(xmlHttpReq.status == 200){  
          ******//dosomething  
        //}  
      //}  
}
xmlhttp.open("Post",url,true);

Java

每当异步时才堪据此xmlHttpReq.onreadystatechange状态值!下面是异步和一块的异调用方式:

   
同步异步使用xmlhttp池时犹要注意:取得xmlhttp时只能新建xmlhttp,不克自池子中取出就就此过的xmlhttp,因为吃利用过之xmlhttp的readyState为4,所以并异步都见面send但切莫履onreadystatechange。

Ajax同步与异步的区别
var returnValue = null; 
xmlhttp = createXmlHttp(); 
xmlhttp.onreadystatechange = function() { 
  if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
    if (xmlhttp.responseText == "true") { 
      returnValue = "true"; 
    } 
    else { 
      returnValue = "false"; 
    } 
  } 
}; 
xmlhttp.open("Post",url,true); //异步传输 
xmlhttp.setRequestHeader("If-Modified-Since","0"); //不缓存Ajax
xmlhttp.send(sendStr); 
return returnValue;

在异步时才可以用xmlHttpReq.onreadystatechange状态值!下面是异步和旅的两样调用方式:

jquery中ajax方法发生只特性async用于控制并同异步,默认是true,即ajax请求默认是异步请求,有时项目蒙会用到AJAX同步。这个合伙的意思是当JS代码加载到手上AJAX的上会拿页面里有的代码停止加载,页面出现假死状态,当以此AJAX执行了后才见面延续运行其他代码页面假死态解除。而异步则这AJAX代码运行中的时刻任何代码一样可运作。
ajax中async这个特性,用于控制请求数据的措施,默认是true,即默认为异步的艺术要数据。
一、async值为true (异步)
当ajax发送请求后,在待server端返回的这进程遭到,前台会延续
执行ajax块后面的本子,直到server端返回正确的结果才见面失去履行success,也就是说这时候执行之是片只线程,ajax块发出请求后一个线程
和ajax块后面的本子(另一个线程)

ajax中async这个特性,用于控制请求数据的道,默认是true,即默认为异步的措施要数据。

$.ajax({  
     type:"POST", 
     url:"Venue.aspx?act=init", 
     dataType:"html", 
     async: false,
    success:function(result){  //function1()
       f1(); 
       f2(); 
     } 
    failure:function (result) {  
      alert('Failed');  
     }, 
 } 
 function2();
xmlHttpReq.open("GET",url,false);//同步方式  
      xmlHttpReq.send(null);  
      showResult(); //showResult虽然是回调函数名但是具体用法不一样~  
function showResult(){   
       //if(xmlHttpReq.readyState == 4){  这里就不用了,直接dosomething吧~  
        //if(xmlHttpReq.status == 200){  
          ******//dosomething  
        //}  
      //}  
}
xmlhttp.open("Post",url,true);

当把asyn设为false时,这时ajax的要时手拉手的,也就是说,这个时ajax块发出请求后,他见面待于function1()这个地方,不会见失掉执行function2(),直到function1()部分实行完毕。

如若是联合(false),返回值是true或false,因为执行完send后,开始实施onreadystatechange,程序会等到onreadystatechange都实施了,取得responseText后才见面继续执行下同样长语句,所以returnValue一定有价。

一、async值为true (异步)

当上例中,当ajax块发出请求后,他拿停留function1(),等待server端的回到,但还要(在这个等待过程被),前台会错过实践function2()。

jquery中ajax方法来个特性async用于控制并和异步,默认是true,即ajax请求默认是异步请求,有时项目中见面就此到AJAX同步。这个并的意思是当JS代码加载到即AJAX的时节会将页面里存有的代码停止加载,页面出现假死状态,当是AJAX执行了后才见面继续运行其他代码页面假死态解除。而异步则这AJAX代码运行中的时别代码一样可运作。

例如

xmlHttpReq.open("GET",url,true);//异步方式
  xmlHttpReq.onreadystatechange = showResult; //showResult是回调函数名
  xmlHttpReq.send(null);
function showResult(){  
  if(xmlHttpReq.readyState == 4){   
   if(xmlHttpReq.status == 200){
   ******
   }
  }
}

当尽时AJAX的时段会终止实施后的JS代码,直到AJAX执行完毕后常,才会继续执行后面的JS代码。

例如

二、async值为false (同步)

您或许感兴趣之章:

当把asyn设为false时,这时ajax的呼吁时一并的,也就是说,这个时刻ajax块发出请求后,他见面等待在function1()这个地方,不会见去实施function2(),直到function1()部分实行了。

$.ajax({  
     type:"POST", 
     url:"Venue.aspx?act=init", 
      dataType:"html", 
     success:function(result){  //function1()
       f1(); 
       f2();  
    } 
     failure:function (result) {  
      alert('Failed');  
     }, 
 } 
 function2();
$.ajax({  
     type:"POST", 
     url:"Venue.aspx?act=init", 
     dataType:"html", 
     async: false,
    success:function(result){  //function1()
       f1(); 
       f2(); 
     } 
    failure:function (result) {  
      alert('Failed');  
     }, 
 } 
 function2(); 
var returnValue = null; 
xmlhttp = createXmlHttp(); 
xmlhttp.onreadystatechange = function() { 
  if(xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
    if (xmlhttp.responseText == "true") { 
      returnValue = "true"; 
    } 
    else { 
      returnValue = "false"; 
    } 
  } 
}; 
xmlhttp.open("Post",url,true); //异步传输 
xmlhttp.setRequestHeader("If-Modified-Since","0"); //不缓存Ajax
xmlhttp.send(sendStr); 
return returnValue;

当ajax发送请求后,在等候server端返回的斯过程被,前台会继续
执行ajax块后面的剧本,直到server端返回正确的结果才会去实施success,也就是说这时候执行之是简单个线程,ajax块发出请求后一个线程
和ajax块后面的剧本(另一个线程)

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图