執行棧執行完同步任務,會向任務隊列擷取已處理完的異步任務,異步任務包括宏任務(常見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>屬于後一個宏任務,故最後輸出