個人對於事件迴圈的一些理解,希望有人來指正(誠心請求指教)

LAPFUTURE發表於2019-03-19

執行棧:同步程式碼直接壓入執行棧

事件佇列:非同步程式碼(分為兩類)進入事件佇列(巨集任務則進入巨集任務佇列,微任務則進入微任務佇列)

個人對於事件迴圈的一些理解,希望有人來指正(誠心請求指教)

兩張圖表明我的想法:

個人對於事件迴圈的一些理解,希望有人來指正(誠心請求指教)

解釋一下上面:

微任務佇列裡面的任務數在一次迴圈中可能會有變化,但是一次迴圈後,微任務佇列一定為空,這是因為執行棧為空後會一直檢查微任務佇列是否為空,只有當執行棧和微任務佇列都為空時才會開啟新的一輪迴圈。

我的疑問:

  • 1.許多資料表明:微任務佇列只有一個,巨集任務佇列有多個,那麼有什麼可以影響巨集任務佇列的新建。並且如果有多個巨集任務佇列的話,程式碼執行過程中遇到新的巨集任務是加到哪個巨集任務佇列?
  • 2.事件佇列裡都是非同步事件,只有第一個巨集任務佇列的第一個巨集任務是整體js程式碼,我這樣理解正確嗎?
  • 3.我現在目前的理解對於大部分題目都可以解釋得通,然後之前面試官糾正我只有一個巨集任務佇列,當然也很有可能是我理解錯了面試官的題目。
  • 希望有人可以點撥我一下,非常感謝!

相關文章