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