Порядок вывода в консоль (задача №5)

Консоль выведет 1, 4, 3, 2, 5, 7, 6. Исполнитель Promise синхронен, then выполняется в микрозадаче, а таймеры запускаются отдельными задачами.

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

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

Консоль выведет 1, 4, 3, 2, 5, 7, 6. Исполнитель Promise синхронен, then выполняется в микрозадаче, а таймеры запускаются отдельными задачами.

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

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

Условие

Определите, какие строки появятся в консоли при выполнении следующего кода.

console.log('1');

setTimeout(() => {
  console.log('2');
}, 0);

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

new Promise((resolve, reject) => {
  console.log('4');
  setTimeout(() => {
    console.log('5');
    resolve('6');
  }, 0);
}).then(value => {
  console.log('7');
  setTimeout(() => {
    console.log(value);
  }, 0);
});

Ответ

Консоль выведет 1, 4, 3, 2, 5, 7, 6. Исполнитель Promise синхронен, then выполняется в микрозадаче, а таймеры запускаются отдельными задачами.

Первый стек печатает 1 и 4, затем микрозадача — 3. Таймеры 2 и 5 были поставлены в этом порядке; после 5 resolve делает доступным then с 7. В нём создаётся ещё один таймер, который позже печатает переданное значение 6.

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

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

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

Подробнее