Карточка Junior Event loop и libuv спрашивают часто обновлено
process.nextTick и setImmediate
Вопрос
Чем process.nextTick отличается от setImmediate?
Попробуйте сами
Ответьте про себя или вслух, потом откройте ответ и сверьтесь.
Показать ответ и разбор
Коротко
nextTick срабатывает сразу после текущей операции, до промисов (в CommonJS) и до перехода к следующей фазе цикла. setImmediate срабатывает в фазе check, то есть после poll текущего или следующего оборота. Названия исторически перепутаны: «immediate» на деле позже.
Ответ
nextTick срабатывает сразу после текущей операции, до промисов (в CommonJS) и до перехода к следующей фазе цикла. setImmediate срабатывает в фазе check, то есть после poll текущего или следующего оборота. Названия исторически перепутаны: «immediate» на деле позже.
Разбор
Рекурсивный nextTick может заморить цикл, рекурсивный setImmediate нет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Рекурсивный process.nextTick
Следующий вопрос
Event loop Node и браузера: в чём разница
Термины по теме
Ещё по теме «Event loop и libuv»
- Тяжёлый цикл без блокировки event loop
- Код-ревью: что блокирует event loop
- Что блокирует event loop
- Объясни event loop в Node.js
- setImmediate и setTimeout внутри I/O
- setTimeout(0) против setImmediate на верхнем уровне
- Что такое libuv
- Порядок nextTick, промиса и setTimeout