JS異步機制
主線程、執行棧、任務隊列
- 主線程不斷讀取執行棧中的同步事件,直到執行棧空
- 異步任務結束放入任務隊列,執行棧空時主線程讀取任務隊列
- 任務隊列讀取完畢,回到步驟1
宏任務與微任務
宏任務:script(整體代碼)、setTimeout、setInterval、UI 渲染、 I/O、postMessage、 MessageChannel、setImmediate(Node.js 環境)
微任務:Promise、 MutaionObserver、process.nextTick(Node.js環境)
- 主線程先執行宏任務,產生的異步任務完成後放入任務隊列
- 宏任務完成後主線程執行微任務,完成後回到步驟1