Когда обещание отклоняется, элемент управления переходит к ближайшему обработчику отклонения вниз по цепочке .
Итак, блок .catch
завершается нормально. Итак, следующий успешный обработчик называется. Или это могло бы вернуть что-то, что было бы так же.
Отсюда и результат
И результат: promise2 error
и promise1 result
.
Таким образом, вы можете иметь столько. Than, сколько мы хотим, а затем использовать один .catch в конце для обработки ошибок во всех них.
Но чтобы получить следующий результат
Не знаю, почему нет promise2 error
и promise1 error
нужно заново выкинуть ошибку
throw error;
И здесь блок .catch анализирует ошибку и выдает ее снова:
function getPromise1() {
return getPromise2().then((result) => {
console.log("promise2 result");
}, (error) => {
console.log("promise2 error");
throw error;
});
}