国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

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

2019-11-20 08:48:55
字體:
來源:轉載
供稿:網友

先來看以下代碼:

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

請問最后alert的index的結果是多少?

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

我們在看一段代碼:

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

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

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

Ajax默認是異步請求的,所以就出現了上面我們看到的結果。也就是ajax里面的代碼還沒有執行完,先執行了下面的代碼。

那么如何使Ajax執行同步請求呢?這就需要設置async。

代碼如下:

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

async默認是true,也就是異步,我們設置為false,即為同步。這時我們再看看結果吧。

以上就是小編為大家帶來的淺談js的ajax的異步和同步請求的問題全部內容了,希望大家多多支持武林網~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陇南市| 师宗县| 凌海市| 囊谦县| 房产| 都匀市| 南涧| 迭部县| 达孜县| 宜君县| 孟州市| SHOW| 金溪县| 元江| 宁强县| 班玛县| 大名县| 濮阳市| 孙吴县| 固镇县| 余姚市| 长海县| 彩票| 保山市| 梁山县| 绥棱县| 兴安县| 大田县| 恭城| 喜德县| 江都市| 汶川县| 乡宁县| 伊川县| 横山县| 普兰县| 邻水| 洛阳市| 万年县| 义乌市| 芮城县|