W Angular, jaka jest różnica pojęciowa między funkcją błędu a funkcją catch dla obietnic?

W końcu udało mi się wyeliminować błąd obietnicy Angulara, ale było to dla mnie sprzeczne z intuicją. Spodziewałem się, że błędy zostaną obsłużone przez wywołanie awaryjne, ale zamiast tego musiałem użyć blokady.

Nie rozumiem pojęciowo, dlaczego wywołanie catch jest wykonywane zamiast wywołania zwrotnego niepowodzenia.

Czego się spodziewałem:

SomeAsyncService.getData().then(function (result) {
    // The call is successful.
    // Code in this block throws an error.
}, function (error) {
    // I expected to handle errors here.
});

Co ostatecznie zadziałało.

SomeAsyncService.getData().then(function (result) {
    // The call is successful.
    // Code in this block throws an error.
}).catch(function (error) {
    // Where the error is actually caught. 
});

Jeśli istnieje bardziej odpowiedni sposób radzenia sobie z błędami obietnicowymi, daj mi znać.

questionAnswers(3)

yourAnswerToTheQuestion