Sobes.tech
Back to questions
Junior — Middle
84

Как устроен цикл обработки событий в модели Event Loop в Node.js?

Answer from AI

sobes.tech AI

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

Основные этапы цикла обработки событий:

  1. Timers: выполняются колбэки, запланированные с помощью setTimeout и setInterval, если их время истекло.

  2. Pending Callbacks: обработка некоторых системных колбэков.

  3. Idle, Prepare: внутренние операции Node.js.

  4. Poll: получение новых событий I/O; выполнение колбэков I/O, если они готовы.

  5. Check: выполнение колбэков, запланированных через setImmediate.

  6. Close Callbacks: обработка закрытия сокетов и других ресурсов.

Цикл повторяется, проверяя очередь событий и вызывая соответствующие колбэки. Если очередь пуста, Event Loop может ждать новые события или завершиться.

Пример:

setTimeout(() => console.log('timeout'), 0);
setImmediate(() => console.log('immediate'));
console.log('start');

Вывод будет:

start
immediate
timeout

Потому что setImmediate вызывается на этапе Check, а setTimeout — на этапе Timers следующего цикла.