Ответ
Event Loop в браузере и Node.js имеют схожую концепцию, но различаются в деталях реализации:
-
Браузер:
- Использует один главный поток (UI thread) для рендеринга и выполнения JS.
- Имеет микротаски (Promises, MutationObserver) и макротаски (setTimeout, события UI).
- Разные API для работы с асинхронностью: XHR, Fetch, DOM Events.
-
Node.js:
- Использует libuv для обработки асинхронных операций.
- Имеет дополнительные фазы: timers, I/O callbacks, idle/prepare, poll, check, close callbacks.
- Поддерживает worker threads для параллельного выполнения.
Пример для Node.js:
setTimeout(() => console.log('timer'), 0);
setImmediate(() => console.log('immediate'));
// Порядок вывода не гарантирован!
В браузере микротаски выполняются между макротасками, а в Node.js - в конце каждой фазы Event Loop.