Что выведет код Junior Event loop и libuv спрашивают часто обновлено

Что выведет: nextTick, промис, таймер, immediate

Вопрос

Напиши вывод CommonJS-скрипта в Node.js 22, по строке на вызов console.log.

const fs = require('node:fs');
console.log('start');
fs.readFile(__filename, () => {
  setTimeout(() => console.log('timeout'), 0);
  setImmediate(() => console.log('immediate'));
  process.nextTick(() => console.log('tick'));
});
Promise.resolve().then(() => console.log('promise'));
console.log('end');

Попробуйте сами

Напишите, что выведет код: каждый вывод с новой строки.

Показать ответ и разбор

Коротко

Код выведет: start, end, promise, tick, immediate, timeout. Синхронно: start, end.

Что выведет

start
end
promise
tick
immediate
timeout

Разбор

Синхронно: start, end. Затем микрозадачи: promise. Когда файл прочитан, в фазе poll выполняется колбэк readFile: он ставит таймер, immediate и nextTick. Сразу после колбэка опустошается очередь nextTick: tick. Следующая фаза check: immediate. Таймер ждёт следующего оборота: timeout.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме