如何在拦截器中手动失败角度$ http请求

时间:2016-08-07 01:07:17

标签: angularjs http interceptor angular-promise

所以我每次都有一台服务器返回200作为响应。我需要检查错误的响应response.data.error如果我发现错误,我需要将http请求发送到我的应用程序代码中的catch方法。

这是我想要发生的一个例子..

拦截器代码

// interceptor code
{
  response:function(response){
    if (response.data.error) {
      return $q.reject(response)
    }else{
      return response
    }
  },
  responseError:function(rejection){
    // error handling logic

    return $q.reject(rejection)
  }
}

应用代码

// application code
$http.get('/api/stuff')
  .then(function(){
    // do success stuff
  }).catch(function(){
    // the function i want to run!!!
  })

2 个答案:

答案 0 :(得分:1)

好吧,这更像是一个愚蠢的错误。这就是我做错了。
就像一个哑巴我在函数内部而不是直接在响应中返回。所以我最终做的是创建一个标志,如果该标志为真,则直接返回响应函数。

拦截器代码

// interceptor code
{
  response:function(response){
    myCustomErrorFunction(){
      if (response.data.error) {
        return $q.reject(response)
      }else{
        return response
      }
    }
  },
  responseError:function(rejection){
    // error handling logic

    return $q.reject(rejection)
  }
}

应用代码

// application code
$http.get('/api/stuff')
  .then(function(){
    // do success stuff
  }).catch(function(){
    // the function i want to run!!!
  })

感谢帮助人员。

答案 1 :(得分:0)

尝试通过以下方式捕获错误:

.catch

我不认为.then会影响它,您需要在$global:OutMessage+="$($var) - test" 区块中执行检查。