Какие существуют сценарии реализации работы Event Loop в Node.js?

Event Loop в Node.js работает в итерациях (тиках) и обрабатывает следующие фазы:

Короткий ответ

Что ответить на собеседовании

Event Loop в Node.js работает в итерациях (тиках) и обрабатывает следующие фазы:

Подробный разбор

Ответ с пояснениями

Event Loop в Node.js работает в итерациях (тиках) и обрабатывает следующие фазы:

  1. Timers: обрабатывает колбэки setTimeout() и setInterval().

  2. Pending callbacks: выполняет колбэки I/O операций, отложенные в предыдущей итерации.

  3. Idle, prepare: внутреннее использование Node.js.

  4. Poll:

    • Выполняет колбэки I/O (в большинстве случаев).
    • Если нет готовых к выполнению I/O колбэков, может ждать новых соединений/событий или переходить к фазе Check.
  5. Check: выполняет колбэки setImmediate().

  6. Close callbacks: выполняет колбэки закрытия, например, для сокетов ('close').

Между основными фазами Event Loop, а также после выполнения каждой фазы, Node.js проверяет и выполняет следующие очереди микрозадач:

  • process.nextTick() queue: имеет наивысший приоритет и выполняется перед всеми другими микрозадачами и фазами Event Loop.
  • Promise queue: выполняет resolved промисы.

Пример:

// Выполняется перед setTimeout, setImmediate и I/O колбэками
process.nextTick(() => {
  console.log('nextTick');
});

// Выполняется в фазе Timers
setTimeout(() => {
  console.log('timeout');
}, 0);

// Выполняется в фазе Check
setImmediate(() => {
  console.log('immediate');
});

// Пример асинхронной I/O операции
const fs = require('fs');
fs.readFile(__filename, () => {
  // Выполняется в фазе Poll
  console.log('read file');
});

// Пример промиса
Promise.resolve().then(() => {
  // Выполняется в очереди промисов
  console.log('promise');
});

Порядок вывода в консоль будет примерно таким:

nextTick
promise
timeout
read file
immediate

(порядок read file и immediate может меняться в зависимости от выполнения I/O операции).

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее