同步和異步
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