Что выведет код Middle Event loop и libuv обновлено

Что выведет: await, nextTick и setImmediate

Вопрос

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

async function run() {
  console.log('1');
  await null;
  console.log('2');
}
setImmediate(() => console.log('3'));
run();
process.nextTick(() => console.log('4'));
console.log('5');

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

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

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

Коротко

Код выведет: 1, 5, 4, 2, 3. Тело async-функции до первого await выполняется синхронно: 1.

Что выведет

1
5
4
2
3

Разбор

Тело async-функции до первого await выполняется синхронно: 1. Затем синхронный 5. После синхронного кода Node выполняет nextTick (4), потом микрозадачи промисов, где продолжается run после await (2). setImmediate сработает только в фазе check: 3.

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

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

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