Angularjs 强制拒绝$http调用

Angularjs 强制拒绝$http调用,angularjs,angular-promise,Angularjs,Angular Promise,我正在使用$http打电话。基于呼叫的成功结果,我可能决定抛出一个错误/拒绝,并将其作为一个错误向下延伸到下一个呼叫。但是,如果抛出错误,只需停止进程。我怎样才能在不使用$q代码的情况下强制拒绝$http承诺 // A service angular.module('app').factory('aService', function ($http, config) { return { subscribe: function (params) { return

我正在使用
$http
打电话。基于呼叫的成功结果,我可能决定抛出一个错误/拒绝,并将其作为一个错误向下延伸到下一个呼叫。但是,如果抛出错误,只需停止进程。我怎样才能在不使用$q代码的情况下强制拒绝$http承诺

// A service

angular.module('app').factory('aService', function ($http, config) {    
  return {
    subscribe: function (params) {
      return $http({
        url: '...'
        method: 'JSONP'
      }).then(function (res) {
        // This is a successful http call but may be a failure as far as I am concerned so I want the calling code to treat it so.
        if (res.data.result === 'error') throw new Error('Big Errror') 
      }, function (err) {
        return err
      })
    }
  }
})


// Controller
 aService.subscribe({
  'email': '...'
}).then(function (result) {

}, function (result) {
    // I want this to be the Big Error message. How do I get here from the success call above?
})

在上面的代码中,我希望大错误消息以拒绝调用结束。然而,在这种情况下,它只是随着错误而消失。这就是我在Bluebird中处理事情的方式,但在这里是不允许的。

Ti在拒绝状态下继续链只需从$http结果返回拒绝的承诺
$q.reject('reason')
,类似于


$http.get(url)。然后(
功能(响应){
如果(某物){
返回$q.reject(‘原因’);
}
返回响应;
}
)


这样,您将得到一个被拒绝的承诺,即使api调用成功,您也可以对其作出反应

Ti在拒绝状态下继续链只需从$http结果返回拒绝的承诺
$q.reject('reason')
,类似于


$http.get(url)。然后(
功能(响应){
如果(某物){
返回$q.reject(‘原因’);
}
返回响应;
}
)


这样,您将得到一个被拒绝的承诺,即使api调用成功,您也可以对其作出反应

在任何一种情况下,只需返回一个被拒绝的承诺return$q.reject('reason')。啊,是的,我想我必须将它包装在一个
$q.deferred
中,但是的,这是有效的。如果你愿意,你可以把它作为一个答案发布。在任何一种情况下,只要返回一个被拒绝的承诺,返回$q.reject('reject')。啊,是的,我想我必须将它包装在一个
$q.DEREFERED
中,但是的,这是有效的。如果你想的话,你可以把它贴出来作为答案。