Определение порядка вывода в консоль (пример 36)

Порядок вывода: 1, 6, 3, 5, 2, 4, 7. Catch отклонённого Promise и then выполненного Promise являются микрозадачами.

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

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

Порядок вывода: 1, 6, 3, 5, 2, 4, 7. Catch отклонённого Promise и then выполненного Promise являются микрозадачами.

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

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

Условие

Укажите, какой порядок будет выведен в консоль при выполнении следующего кода:

 console.log(1);

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

Promise.reject(3).catch(console.log);

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

Promise.resolve(5).then(console.log);

console.log(6);

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

Ответ

Порядок вывода: 1, 6, 3, 5, 2, 4, 7. Catch отклонённого Promise и then выполненного Promise являются микрозадачами.

После синхронных 1 и 6 выполняются 3 и 5. Первый таймер печатает 2, следующий разрешает Promise без своего сообщения, и его then печатает 4 перед последним таймером с 7. Отсутствие явной задержки у setTimeout не делает его синхронным.

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

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

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

Подробнее