从$ http.success返回错误

时间:2015-06-18 19:24:09

标签: angularjs callback promise

我在Angular工作,当在.success()中解析结果时,我需要在链中进一步表示一个错误。

我在我的服务中调用了一个函数,比如

myService.myFunction().then(
   function(results){
      // do success stuff
   },
   function(err){
      // do failure stuff
   });

myFunction就像

myFunction(){
    return $http.get('url')
       .success(function(results){})
       .error(function(err){})
}

基于某些条件,我需要让.then()执行errorCallback,即使触发了$ http.get()。success()。如何让它看起来像$ http收到错误?

1 个答案:

答案 0 :(得分:4)

要实现此目的,您需要执行的一些修复是使用then上的success代替$http功能。

then成功回调中,您可以执行return $q.reject(errorData)拒绝链中的承诺。

return $http.get('url').then(function(results){
    if(condition) {
      return $q.reject(errorData);
    }
    return result.data;  //then callback get a object with properties
},function(error) {
      return $q.reject(error);
  })

success返回原始$http承诺,而then返回使用成功和错误回调的返回值解析的承诺。