前端提升(12) 之 微任務和宏任務 + EventLoop

導航

在這裏插入圖片描述

1、微任務和宏任務

首先舉幾個典型的微任務和宏任務

微任務的代表
promise
nodejs中的process.nextTick

宏任務的代表
setTImeout
setInterVal

console.log(1) //主線程

setTimeout(() => { //宏任務
  console.log(2)
}, 1000)

new Promise(resolve => { //主線程
  resolve()
  console.log(3)
}).then(() => { //微任務
  console.log(4)
})

console.log(5) //主線程 

//輸出順序 1、3、5、4、2

執行順序爲主線程–>微任務–>宏任務

2、EventLoop

(1)所有同步任務都在主線程上執行,形成一個執行棧(execution context stack)。

(2)主線程之外,還存在一個"任務隊列"(task queue)。只要異步任務有了運行結果,就在"任務隊列"之中放置一個事件。

(3)一旦"執行棧"中的所有同步任務執行完畢,系統就會讀取"任務隊列",看看裏面有哪些事件。那些對應的異步任務,於是結束等待狀態,進入執行棧,開始執行。

(4)主線程不斷重複上面的第三步。

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