Я чувствую, что я могу делать то, что обещания не были разработаны, чтобы сделать, но здесь мы идем, это то, что я хотел бы сделать:Угловые обещания - прыжки с успеха на обратный вызов отказа?
$http.get('/api/endpoint/PlanA.json').then(
function success(response) {
if (response.data.isAllGood) {
$scope.myData = response.data;
}
else {
// TODO HERE! Call the failure function!
}
},
function failure() {
$http.get('/api/endpoint/PlanB.json').then(
function planBsuccess(response) {
$scope.myData = response.data;
}
);
}
).then(function doOtherStuff() {});
Это работает, как ожидалось, если, например, в PlanA
Конечная точка возвращает 404 или 500 ... но если она преуспевает, но имеет плохие данные (например, isAllGood
- это ложь), то мне бы хотелось, чтобы она попала в обратный вызов сбоя. Есть простой способ сделать это?
Я пробовал звонить $q.defer().reject
и возвращать это обещание, однако это просто вызывает обратный вызов отказа для doOtherStuff
.
Почему downvote? –
Спасибо за это. Я в основном завернул ваш второй в функции, которая вернула себе обещание, и когда он «разрешил», я вызвал 'doOtherStuff'. Благодаря! –