Управление ошибкой в цепочке промисов и дальнейшее её выполнение

В консоли будут 5 и 20. Первый then пропускается из-за отклонения; catch печатает причину и возвращает 10, переводя дальнейшую цепочку в успешное состояние.

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

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

В консоли будут 5 и 20. Первый then пропускается из-за отклонения; catch печатает причину и возвращает 10, переводя дальнейшую цепочку в успешное состояние.

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

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

Условие

Разобрать, как работает последовательность промисов при возникновении отклонения, как обрабатывается ошибка через catch, какое влияние имеет возвращаемое значение из обработчика ошибки на дальнейшие .then, и как происходит передача результатов по цепочке.

Promise.reject(5)
  .then(console.log)
  .catch((err) => {
    console.log(err);
    return 10;
  })
  .then(() => 10)
  .then((data) => console.log(data * 2));

Ответ

В консоли будут 5 и 20. Первый then пропускается из-за отклонения; catch печатает причину и возвращает 10, переводя дальнейшую цепочку в успешное состояние.

Следующий .then(() => 10) игнорирует переданный результат catch и независимо возвращает то же число 10. Последний then получает 10 и печатает 20. Если catch вместо возврата выбросит ошибку или вернёт отклонённый Promise, успешные then ниже будут пропущены. Нормальное завершение обработчика ошибки означает восстановление цепочки, даже если он вернул undefined.

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

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

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

Подробнее