2. В каком порядке выведутся значения?

Консоль выведет 5, 2, 6, 3. Обработчики 1 и 7 не выполняются: исходный Promise отклонён, а обе catch-ветви восстанавливают успешное продолжение.

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

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

Консоль выведет 5, 2, 6, 3. Обработчики 1 и 7 не выполняются: исходный Promise отклонён, а обе catch-ветви восстанавливают успешное продолжение.

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

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

Условие

  1. В каком порядке выведутся значения?
const q = Promise.reject();

q.then(() => console.log(1))
 .catch(() => console.log(2))
 .then(() => console.log(3));

q.catch(() => console.log(5))
 .then(() => console.log(6))
 .catch(() => console.log(7));

Ответ

Консоль выведет 5, 2, 6, 3. Обработчики 1 и 7 не выполняются: исходный Promise отклонён, а обе catch-ветви восстанавливают успешное продолжение.

Сначала ставятся реакции двух ветвей q. Первая реакция лишь переносит отказ через then без onRejected, а вторая выводит 5. Затем готов первый catch с 2 и продолжение второй ветви с 6. После успешного catch первой ветви выполняется then с 3. Последний catch второй ветви пропускается, так как ошибки уже нет.

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

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

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

Подробнее