整理一下微任務和巨集任務

2021-10-01 11:26:34 字數 1004 閱讀 9506

整理一下微任務和巨集任務

非同步執行的執行機制如下(同步任務也如此,因為它可以被視為沒有非同步任務的非同步執行):

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

主線程之外,還存在乙個「任務佇列」,只要非同步任務有了執行結果,就在「任務佇列」之中放置乙個事件

3.一旦「執行棧」中的所有同步任務執行完畢,系統就會讀取「任務佇列」,看看裡面有哪些事件。那些對應的非同步任務,於是結束等待,進入執行棧,開始執行

主線程不斷重複

不同型別的任務會進入不同的event queue,有巨集任務的佇列和微任務的佇列。

事件迴圈的順序,決定js**的執行順序。進入整體**(巨集任務)後,開始第一次迴圈。接著執行所有的微任務。然後再次從巨集任務開始,找到其中乙個任務佇列執行完畢,再執行所有的微任務。

settimeout(function() )

new promise(function(resolve) ).then(function() )

console.log('console');

答案:promise console then settomeout

console.log('1');

settimeout(function() )

new promise(function(resolve) ).then(function() )

})process.nexttick(function() )

new promise(function(resolve) ).then(function() )

settimeout(function() )

new promise(function(resolve) ).then(function() )

})

答案

1 7 6 8 、2 4 3 5、 9 11 10 12

node 下結果

1768 24911 310512

巨集任務和微任務

概念 1.巨集任務 當前呼叫棧中執行的 成為巨集任務。主 快,定時器等等 3.巨集任務中的事件放在callback queue中,由事件觸發執行緒維護 微任務的事件放在微任務佇列中,由js引擎執行緒維護。執行機制02 1.在執行棧中執行乙個巨集任務。2.執行過程中遇到微任務,將微任務新增到微任務佇列...

巨集任務和微任務

1.巨集任務 分類 settimeout setinterval requrestanimationframe 1 巨集任務所處的佇列就是巨集任務佇列 2 第乙個巨集任務列中只有乙個任務,執行主線程的js 3 巨集任務佇列可以有多個 2.微任務 分類 new promise then process...

巨集任務和微任務

什麼是巨集任務和微任務 j ascript把非同步任務又做了進一步的劃分,非同步任務又分為兩類,分別是 巨集任務 macrotask 微任務 microtask 巨集任務與微任務的執行順序 每乙個巨集任務執行完之後,都會檢查是否存在待執行的微任務,如果有,則執行完所有的微任務之後,再繼續執行下乙個巨...