В консоли появятся 1, 3, 6, 7. Обработчики 2, 4 и 5 не вызываются: первая цепочка успешна, вторая переносит отклонение до catch.
Порядок вывода в консоль (задача 56)
В консоли появятся 1, 3, 6, 7. Обработчики 2, 4 и 5 не вызываются: первая цепочка успешна, вторая переносит отклонение до catch.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Определите, в какой последовательности будут напечатаны строки при выполнении следующего кода:
Promise.resolve(1)
.then(x => console.log(1))
.catch(x => console.log(2))
.then(x => console.log(3))
Promise.reject(2)
.then(x => console.log(4))
.then(x => console.log(5))
.catch(x => console.log(6))
.then(x => console.log(7))
Ответ
В консоли появятся 1, 3, 6, 7. Обработчики 2, 4 и 5 не вызываются: первая цепочка успешна, вторая переносит отклонение до catch.
Обработчик печати 1 возвращает undefined, после чего успешное состояние проходит через catch первой цепочки и доходит до печати 3. Во второй цепочке оба then без onRejected передают причину отклонения дальше, занимая последовательные шаги микрозадач. Затем catch печатает 6 и нормально возвращается, поэтому следующий then уже выполняется и печатает 7. Отсутствующий обработчик не делает переход по цепочке синхронным.