Что выведет код Middle Асинхронные паттерны обновлено

Что выведет: микрозадачи внутри таймера

Вопрос

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

setTimeout(() => {
  console.log('t1');
  process.nextTick(() => console.log('tick'));
  Promise.resolve().then(() => console.log('promise'));
}, 0);
setTimeout(() => console.log('t2'), 0);
console.log('sync');

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

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

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

Коротко

Код выведет: sync, t1, tick, promise, t2. Сначала синхронный sync.

Что выведет

sync
t1
tick
promise
t2

Разбор

Сначала синхронный sync. В фазе timers выполняется первый таймер: t1. После каждого колбэка таймера Node опустошает очереди nextTick и микрозадач, поэтому tick и promise выводятся до второго таймера. Затем t2.

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

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

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