2023-05-15 (1)js中的同步任務與非同步任務 ①同步任務是指:不耗時的任務,就是執行很快, ②非同步任務是指:耗時的任務,它裡面有一個機制是EventLoop(事件迴圈),即值耗時任務會被js分配到宿主環境中進行執行,執行後的結果放到一個“消息隊列”中,當js將同步任務執行完畢後,才會調用異 ...
2023-05-15
(1)js中的同步任務與非同步任務
①同步任務是指:不耗時的任務,就是執行很快,
②非同步任務是指:耗時的任務,它裡面有一個機制是EventLoop(事件迴圈),即值耗時任務會被js分配到宿主環境中進行執行,執行後的結果放到一個“消息隊列”中,當js將同步任務執行完畢後,才會調用非同步環境。在消息隊列中的存放順序的位置的規則是按照“誰(非同步任務)先執行完,誰的運算結果先存放”,之後使用回調函數進行調用。
(2)有關EventLoop的經典面試題
問題:請說明上述代碼的執行順序
結果:ADCB
理由:A與D時同步任務,readFile與setTimeout是非同步任務。A,B先執行,C,D後執行,因為setTimeout中的0毫秒之後進行響應,它的返回結果需要的時間短,它先執行。readFile非同步任務中讀取文件需要時間,因此它最後執行。所以執行的結果是ADCB。
(3)巨集任務與微任務
①巨集任務與微任務都是非同步任務
②巨集觀任務與微觀任務的劃分如下: