AngularJS:在什么具体情况下,$ http退回的承诺被拒绝了?

时间:2015-07-01 22:37:04

标签: angularjs http promise

我对Angular(或一般的JavaScript)很新,我在这里有一个愚蠢的问题。我理解承诺如何运作,但在$http请求(PUTGET或其他什么)返回的承诺在什么具体情况下会被拒绝?我很确定如果请求超时,那么承诺肯定会被拒绝;但是404或403等其他错误呢?我从Angular Docs找不到任何此类信息......非常感谢!

1 个答案:

答案 0 :(得分:1)

如果出现任何$ http错误,则承诺将被拒绝。 $ httpProvider基于Interceptor Pattern,其中每个请求/响应都通过处理此错误的管道传递。

在AngularJS中构建的默认拦截器将执行类似的操作,以拒绝承诺:

'responseError': function(rejection) {
  // do something on error
  if (canRecover(rejection)) {
    return responseOrNewPromise
  }
  return $q.reject(rejection); //<------ Rejecting the Promise here given a http error
}

您可以在$ httpProvider中构建和附加自己的Interceptor来处理特定错误(400,500等)。请查看$ http文档下的Interceptor部分。