Что окажется в консоли (пример 29)

Сначала выведется f, затем abd. Первый catch превращает rejection 'a' в успешное значение 'ab', поэтому второй catch пропускается.

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

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

Сначала выведется f, затем abd. Первый catch превращает rejection 'a' в успешное значение 'ab', поэтому второй catch пропускается.

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

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

Условие

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

Promise.reject("a")
  .catch((val) => val + "b")
  .catch((val) => val + "c")
  .then((val) => val + "d")
  .then((val) => console.log(val));

console.log("f");

Ответ

Сначала выведется f, затем abd. Первый catch превращает rejection 'a' в успешное значение 'ab', поэтому второй catch пропускается.

Первый обработчик ошибки возвращает обычную строку val + 'b', а не бросает исключение. Следующий Promise цепочки становится fulfilled. Второй catch предназначен только для rejected-состояния и не добавляет c.

then добавляет d, а последний then выводит abd. Синхронный console.log('f') выполняется раньше любых обработчиков Promise, независимо от того, что расположен ниже цепочки в исходном тексте.

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

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

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

Подробнее