Что такое Event Loop в Node.js?

«Что такое Event Loop в Node.js?» — вопрос из категории Node.js Core, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Event Loop — это ядро асинхронной архитектуры Node.js, однопоточного цикла, который управляет выполнением неблокирующих операций ввода-вывода. Он координирует выполнение колбэков из различных фаз, позволяя обрабатывать тысячи одновременных соединений.

Основные фазы Event Loop:

  1. Timers: Выполняются колбэки от setTimeout() и setInterval().
  2. Pending callbacks: Обрабатываются отложенные системные операции (например, ошибки TCP).
  3. Poll: Извлекает новые события I/O и выполняет их колбэки.
  4. Check: Выполняет колбэки setImmediate().
  5. Close callbacks: Обрабатывает колбэки 'close' событий.

Пример порядка выполнения:

console.log('Start');

setTimeout(() => console.log('Timeout'), 0);
setImmediate(() => console.log('Immediate'));

Promise.resolve().then(() => console.log('Promise'));

process.nextTick(() => console.log('Next Tick'));

console.log('End');

Вывод:

Start
End
Next Tick
Promise
Timeout
Immediate

Ключевые моменты:

  • process.nextTick() и микрозадачи Promise выполняются между фазами Event Loop.
  • В реальных приложениях я использую это понимание для оптимизации производительности, например, разбивая CPU-intensive задачи с помощью setImmediate() чтобы не блокировать цикл.

Видео-ответы