Обещание в блоке if / else с общим уловом (Angular) - PullRequest
0 голосов
/ 15 января 2020

В моем приложении 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());

Но не слишком ли сложно создать функцию просто для перехвата?

...