> Для чего нужен setImmediate() в JavaScript и как он работает (JavaScript)

Уровень: senior · Роль: frontend · Язык: JavaScript · Категория: Технические вопросы

Компании: Mosline

Стек: Node.js, JavaScript

> Пример ответа

setImmediate() - это функция, доступная в среде Node.js (не в браузере), которая планирует выполнение переданного колбэка после завершения текущей фазы цикла событий (event loop). Её основная цель - дать возможность выполнить асинхронную задачу как можно скорее, но после того, как будут обработаны все операции ввода-вывода (I/O) и таймеры в текущей итерации.Как это работает: в цикле событий Node.js есть несколько фаз: таймеры (setTimeout, setInterval), I/O колбэки, idle/prepare, опрос (poll), проверка (check) и close. setImmediate() помещает колбэк в фазу "check". Это означает, что колбэк выполнится сразу после фазы опроса (poll), но перед любыми таймерами, которые были запланированы на следующую итерацию.Пример:

JAVASCRIPT
setTimeout(() => console.log('таймер'), 0);
setImmediate(() => console.log('immediate'));

В большинстве случаев setImmediate выполнится раньше setTimeout с задержкой 0, так как фаза check наступает раньше, чем таймеры в следующей итерации (хотя в некоторых ситуациях порядок может меняться из-за особенностей цикла).setImmediate полезен, когда нужно отложить выполнение тяжёлого кода, чтобы не блокировать обработку I/O, или когда требуется гарантировать порядок выполнения после текущих операций. В отличие от process.nextTick(), который выполняется на той же фазе до любых I/O, setImmediate даёт циклу событий возможность обработать другие задачи.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью