Есть ли какая-то разница между функциями f1
и f2
?
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
В JavaScript обработчик ошибок для промисов можно добавить двумя основными способами.
Первый показан в функции f1
. Мы передаем обработчик errorHandler
как второй аргумент для .then()
.
Второй подход реализован в функции f2
. Тут, мы добавляем errorHandler
используя функцию .catch()
.
В обоих случаях обработчик errorHandler
будет вызван если ошибка произойдет внутри promise
.
Если же promise
завершится успешно, то выполнение продолжится внутри successHandler
. И если successHandler
бросит ошибку, то она будет обработана только в f2
, но не в f1
.
Это происходит из-за того, как реализован блок .catch()
для JavaScript промисов. Он обрабатывает все ошибки в цепочке промисов, даже те, которые возникли внутри функций переданных в .then()
.
ОТВЕТ: Да, есть большая разница между f1
и f2
. Первая функция не обработает ошибку внутри successHandler
(если она возникнет), а вторая справится с ошибкой без проблем.