Определение порядка вывода в консоль – задача №27

Порядок вывода: 1, 5, 8, 3, 6, 2, 7, 4. console.log(5) вычисляется как аргумент Promise.resolve синхронно, а не откладывается в микрозадачу.

Короткий ответ

Что ответить на собеседовании

Порядок вывода: 1, 5, 8, 3, 6, 2, 7, 4. console.log(5) вычисляется как аргумент Promise.resolve синхронно, а не откладывается в микрозадачу.

Подробный разбор

Ответ с пояснениями

Условие

Укажите порядок, в котором будут напечатаны значения в консоль.

 console.log(1);

setTimeout(() => console.log(2));

Promise.resolve().then(() => console.log(3));

Promise.resolve().then(() => setTimeout(() => console.log(4)));

Promise.resolve(console.log(5)).then(() => console.log(6));

setTimeout(() => console.log(7));

console.log(8);

Ответ

Порядок вывода: 1, 5, 8, 3, 6, 2, 7, 4. console.log(5) вычисляется как аргумент Promise.resolve синхронно, а не откладывается в микрозадачу.

Затем синхронно печатается 8. Очередь микрозадач выводит 3, регистрирует таймер 4 и выводит 6. После этого выполняются таймеры: ранее зарегистрированные 2 и 7, потом созданный из then таймер 4. Promise.resolve получает результат console.log(5), то есть undefined; это не мешает следующему then вывести 6.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее