Как устроен цикл обработки событий в модели Event Loop в Node.js?
Answer from AI
sobes.tech AI
Event Loop в Node.js — это механизм, который позволяет выполнять неблокирующие операции, несмотря на однопоточный характер среды.
Основные этапы цикла обработки событий:
-
Timers: выполняются колбэки, запланированные с помощью
setTimeoutиsetInterval, если их время истекло. -
Pending Callbacks: обработка некоторых системных колбэков.
-
Idle, Prepare: внутренние операции Node.js.
-
Poll: получение новых событий I/O; выполнение колбэков I/O, если они готовы.
-
Check: выполнение колбэков, запланированных через
setImmediate. -
Close Callbacks: обработка закрытия сокетов и других ресурсов.
Цикл повторяется, проверяя очередь событий и вызывая соответствующие колбэки. Если очередь пуста, Event Loop может ждать новые события или завершиться.
Пример:
setTimeout(() => console.log('timeout'), 0);
setImmediate(() => console.log('immediate'));
console.log('start');
Вывод будет:
start
immediate
timeout
Потому что setImmediate вызывается на этапе Check, а setTimeout — на этапе Timers следующего цикла.