[JS]同步和異步的簡單理解

同步和異步

Javascript語言將任務的執行模式分成兩種:同步(Synchronous)和異步(Asynchronous)

同步:一個任務完成了,有返回結果,纔可以開展下一個任務。比如去超市買東西付賬,必須等前面一個人付完了,才能輪到你付賬,中途你是不能離開的

f1();
f2();

異步:一個任務正在做,它的下一個任務不必等前任務結束就可以繼續執行(類似多線程)。
比如你想買東西,又不想出門,那就直接網購天貓超市下單,下完單後,你可以幹別的,比如刷劇,玩遊戲。直到貨物到了,你簽收就可以。
再比如,花瓣網頁面數據加載過程,不需要等所有數據獲取後再顯示頁面,而是你邊看邊繼續加載新的圖片。
再再比如,你正在開發新功能,客戶突然給你提了bug,加上這個bug的活,你手上有3個活,但是bug很急需要馬上做,你可以先把最緊急的做了,等有時間再做繼續開發心功能…有關異步的典型例子就是ajax。
下面這個例子是jQuery ajax() 方法

var answer=true;
$.ajax({
  url: "http://xxxxxxxx/",
  success: function(a){
    a=false;
  }  
});
alert(answer); //answer輸出true

js是單線程的,Ajax(Asynchronous JavaScript and XML)默認是異步請求的,Ajax裏面的代碼還沒有執行完,先執行了下面的代碼,所以輸出是true.
對AJAX不是很熟悉的同學可以看下參考鏈接最後一條

參考鏈接

http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html
https://www.zhihu.com/question/19732473
https://www.runoob.com/jquery/ajax-ajax.html
https://segmentfault.com/a/1190000004322358

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章