天天看點

任務隊列和事件循環

執行棧執行完同步任務,會向任務隊列擷取已處理完的異步任務,異步任務包括宏任務(常見settimeout)和微任務(常見promise),微任務在每一個宏任務處理完時執行。(把全局看成一個宏任務,可了解為微任務先于宏任務,如下例子)

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

例子中,列印出​<code>​1​</code>​後,​<code>​new promise​</code>​ 會直接執行 7 ,而​<code>​then​</code>​會進入任務隊列的微任務裡,此時 ​<code>​7​</code>​和​<code>​6​</code>​ 同屬一個宏任務裡的微任務,​<code>​6​</code>​位置靠前,故先執行,,宏任務(定時器)會在全局的微任務結束後才執行,且宏任務包含的微任務緊随其後,故列印​<code>​2 4 3 5​</code>​,之後的​<code>​9 11 10 12​</code>​屬于後一個宏任務,故最後輸出