Что выведет код Middle Асинхронные паттерны обновлено
Что выведет: await, then, nextTick и таймер
Вопрос
Напиши вывод CommonJS-скрипта в Node.js 22, по строке на вызов console.log.
async function a() {
console.log('a1');
await b();
console.log('a2');
}
async function b() {
console.log('b');
}
console.log('start');
setTimeout(() => console.log('timeout'), 0);
a();
Promise.resolve().then(() => console.log('then'));
process.nextTick(() => console.log('tick'));
console.log('end');
Попробуйте сами
Напишите, что выведет код: каждый вывод с новой строки.
Показать ответ и разбор
Коротко
Код выведет: start, a1, b, end, tick, a2, then, timeout. Синхронно: start, затем a() печатает a1 и вызывает b(), которая тоже синхронно печатает b. await откладывает продолжение a в микрозадачу, которая встаёт в очередь раньше then.
Что выведет
start
a1
b
end
tick
a2
then
timeout
Разбор
Синхронно: start, затем a() печатает a1 и вызывает b(), которая тоже синхронно печатает b. await откладывает продолжение a в микрозадачу, которая встаёт в очередь раньше then. Затем синхронный end. После синхронного кода: сначала nextTick (tick), потом микрозадачи в порядке постановки: a2, then. Таймер последним.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.