Что выведет код 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 ошибок.
Предыдущий вопрос
Порядок nextTick, промиса и setTimeout
Следующий вопрос
Что выведет: nextTick, промис, таймер, immediate
Термины по теме
Ещё по теме «Event loop и libuv»
- Тяжёлый цикл без блокировки event loop
- Код-ревью: что блокирует event loop
- Что блокирует event loop
- Объясни event loop в Node.js
- setImmediate и setTimeout внутри I/O
- setTimeout(0) против setImmediate на верхнем уровне
- Что такое libuv
- Рекурсивный process.nextTick