JS運行機制

1、引子

題目:

console.log(1);
setTimeout(function(){
    console.log(3);
},0);
console.log(2);

輸出結果:1 2 3

2、JS是單線程的

單線程:同一個時間只能做一件事

3、任務隊列(消息隊列)

同步任務:在主線程上排隊執行的任務,只有前一個任務執行完畢,才能執行後一個任務;

異步任務:不進入主線程、而進入"任務隊列"(task queue)的任務,只有"任務隊列"通知主線程,某個異步任務可以執行了,該任務纔會進入主線程執行。

4、任務分類:

宏任務:包括整體代碼script,setTimeout,setInterval

微任務:Promise,process.nextTick

5、執行流程圖

事件循環,宏任務,微任務的關係如圖:

7、參考文章:

https://juejin.im/post/59e85eebf265da430d571f89

 

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