Ответ
Event Loop — это ядро асинхронной архитектуры Node.js, однопоточного цикла, который управляет выполнением неблокирующих операций ввода-вывода. Он координирует выполнение колбэков из различных фаз, позволяя обрабатывать тысячи одновременных соединений.
Основные фазы Event Loop:
- Timers: Выполняются колбэки от
setTimeout()иsetInterval(). - Pending callbacks: Обрабатываются отложенные системные операции (например, ошибки TCP).
- Poll: Извлекает новые события I/O и выполняет их колбэки.
- Check: Выполняет колбэки
setImmediate(). - 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()чтобы не блокировать цикл.
Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶