Node.js Event Loop
📌 1. 基本概念
Node.js 採用 單執行緒(single-threaded)非阻塞 I/O 架構。
Event Loop 是負責協調 非同步任務的核心機制。
所有非同步任務都會被排入隊列中等待事件循環依序執行。
📌 2. Event Loop 流程階段(六個階段)
階段名稱 | 處理對象 |
---|---|
timers | setTimeout / setInterval |
pending callbacks | 某些系統操作的回呼 |
idle, prepare | 內部使用 |
poll | I/O 事件發生與回應 |
check | setImmediate |
close callbacks | socket.on('close') |
✅ 每一輪事件循環稱為 一個 tick。
📌 3. 微任務 vs 巨任務(Microtasks vs Macrotasks)
任務類型 | 代表 |
---|---|
Microtask | process.nextTick, Promise.then, queueMicrotask |
Macrotask | setTimeout, setImmediate, I/O callback |
執行順序:
每次 macrotask 結束後,會立刻清空 microtask 隊列再進入下一輪 event loop。