В моем приложении angular я хочу иметь блок if / else, который выполняет похожие, но не идентичные запросы http. Обработка ошибок хотя и распространена, поэтому я хочу как-то использовать один общий улов для обоих обещаний, если это возможно?
Я пробовал это:
if(foobar){
promise = $http({
method: 'POST',
url: '/api/listings/'+ $scope.listing.id +'.json',
data: dataObj,
headers: {
"Content-Type": undefined,
"X-HTTP-Method-Override": "PUT"
}
});
promise.then (function() {
alert = {'message': 'Listing successfully updated', 'status': 'alert-success', 'hide': true};
AlertService.setValue(alert);
});
} else {
promise = $http({
method: 'POST',
url: '/api/listings.json',
data: dataObj,
headers: {
"Content-Type": undefined,
}
});
promise.then (function() {
alert = {'message': 'Listing successfully created - add another or <a href="/listings/browse">view your listings?</a>', 'status': 'alert-success', 'hide': true};
AlertService.setValue(alert);
$scope.listing = {}; // clear the listing $scope
$scope.addListing.$setPristine(); // reset the state of the form
});
}
promise.catch(function(response) {
alert = {'message':(response.data.data.message ? response.data.data.message : 'An error occurred'), 'status':'alert-danger', 'hide':true};
AlertService.setValue(alert);
$window.scrollTo(0, 0);
});
Я не думаю, что улов хотя должным образом прикован к обещанию Я думал, что смогу создать функцию с именем catchError:
promise.then (function() {...}) . catch(catchError());
Но не слишком ли сложно создать функцию просто для перехвата?