亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談js的ajax的異步和同步請求的問題

 更新時間:2016年10月07日 12:01:42   投稿:jingxian  
下面小編就為大家?guī)硪黄獪\談js的ajax的異步和同步請求的問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

先來看以下代碼:

var flag=true;
var index=0;
$.ajax({
  url: "http://chabaoo.cn/",
  success: function(data){
    flag=false;
  }  
});
while(flag){
  index++;
}
alert(index);

請問最后alert的index的結(jié)果是多少?

可能有人會說0唄。實際上卻沒那么簡單。大家可以自己試試看。可以看到最終程序進(jìn)入了一個死循環(huán)!怎么會這樣呢!

我們在看一段代碼:

var flag=true;
$.ajax({
  url: "http://chabaoo.cn/",
  success: function(data){
    flag=false;
  }  
});
alert(flag);

大家看最后alert出flag的值是多少呢?沒錯,是true!為什么呢?明明我們在ajax請求成功了將flag設(shè)為false,怎么還是true呢?這實際上是Ajax的異步機(jī)制造成的。

這里解釋一下,同步和異步。js是單線程的,由于執(zhí)行ajax請求會消耗一定的時間,甚至出現(xiàn)了網(wǎng)絡(luò)故障而遲遲得不到返回結(jié)果;這時,如果同步執(zhí)行的話,就必須等到ajax返回結(jié)果以后才能執(zhí)行接下來的代碼,如果ajax請求需要1分鐘,程序就得等1分鐘。如果是異步執(zhí)行的話,就是告訴ajax代碼“老兄,既然你遲遲不返回結(jié)果,我先不等你了,我還有一大堆代碼要執(zhí)行,等你執(zhí)行完了給我說一下”。

Ajax默認(rèn)是異步請求的,所以就出現(xiàn)了上面我們看到的結(jié)果。也就是ajax里面的代碼還沒有執(zhí)行完,先執(zhí)行了下面的代碼。

那么如何使Ajax執(zhí)行同步請求呢?這就需要設(shè)置async。

代碼如下:

var flag=true;
var index=0;
$.ajax({
  url: "http://chabaoo.cn/",
  async:false,
  success: function(data){
    flag=false;
  }  
});
while(flag){
  index++;
}
alert(index);

async默認(rèn)是true,也就是異步,我們設(shè)置為false,即為同步。這時我們再看看結(jié)果吧。

以上就是小編為大家?guī)淼臏\談js的ajax的異步和同步請求的問題全部內(nèi)容了,希望大家多多支持腳本之家~

相關(guān)文章

最新評論