後端語言 中階

Node.js Event Loop 的運作機制為何?如何避免阻塞?

AI 練習作答

Node.js Event Loop

核心概念

Node.js 是單執行緒但非阻塞的,透過 Event Loop 實現非同步 I/O。

Event Loop 六個階段(按順序)

  1. timers:執行 setTimeout / setInterval 的 callback
  2. pending callbacks:執行上輪延遲的 I/O callback
  3. idle, prepare:內部使用
  4. poll:擷取新 I/O 事件;執行 I/O callback
  5. check:執行 setImmediate callback
  6. close callbacks:執行 socket.on("close")

微任務(Microtask)優先於下一個階段

  • Promise.then / queueMicrotask → 最高優先
  • process.nextTick → 比 Promise 更高(Node.js 特有)

執行順序範例

process.nextTick → Promise.then → setTimeout → setImmediate

常見阻塞原因與解法

問題 解法
同步 CPU 密集運算 Worker Threads / child_process
大量 JSON parse 拆分 + setImmediate 讓出控制
同步 fs 操作 改用 fs.readFile(異步)

面試加分:解釋 process.nextTickPromise.then 的優先級差異,以及為何過度使用 nextTick 可能 starve 其他 callback。

✦ AI 模擬面試

輸入你的答案,AI 即時分析精準度與改進空間

登入後即可使用 AI 評分