javascript interview question #27

Есть ли какая-то разница между функциями f1 и f2?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

В JavaScript обработчик ошибок для промисов можно добавить двумя основными способами.

Первый показан в функции f1. Мы передаем обработчик errorHandler как второй аргумент для .then().

Второй подход реализован в функции f2. Тут, мы добавляем errorHandler используя функцию .catch().

В обоих случаях обработчик errorHandler будет вызван если ошибка произойдет внутри promise.

Если же promise завершится успешно, то выполнение продолжится внутри successHandler. И если successHandler бросит ошибку, то она будет обработана только в f2, но не в f1.

Это происходит из-за того, как реализован блок .catch() для JavaScript промисов. Он обрабатывает все ошибки в цепочке промисов, даже те, которые возникли внутри функций переданных в .then().


ОТВЕТ: Да, есть большая разница между f1 и f2. Первая функция не обработает ошибку внутри successHandler (если она возникнет), а вторая справится с ошибкой без проблем.