Event Loop
Event Loop - бесконечный цикл в рамках NodeJS который выполняет все операции, которые в него поступают.
Event Loop делится на следующие фазы:
Таймеры - Проверка и выполнение обратных вызовов (callbacks) для таймеров, время которых истекло;
Pending callback - Выполнение коллбеков от системных операций;
Idle, prepare - Внутренняя фаза, не имеет отношения к разработчику;
Обработка Input/Output - Основная фаза для событий пользователей и системы, касающаяся ввода-вывода. Не является непрерывной из-за расчета времени и количества обработанных запросов;
Check - Выполнение операций, запланированных через
setImmediate;Close callback - Обработка коллбеков закрывающих событий, например, прерывание соединения с сокетами;
После каждой выполненной фазы, выполняется также process.nextTick() и other microtascQueue. Они проверяют, нет ли промисов, не добавилось ли и не сломалось ли ничего.
И непосредственно полный цикл работы выглядит так:
Инициализация - Выполнение синхронного кода, регистрация обратных вызовов;
Проход по основным фазам Event Loop - Включая проверку задач на выполнение;
Проверка завершения - Если нет активных задач, процесс завершается. В противном случае начинается следующий цикл Event Loop.