我正在尝试使用$http'
拦截器为我的网站编写一个通用的错误处理程序,但它们似乎无法做我想做的事。
我在'response'
和'responseError'
上放置了拦截器,但是当服务器脱机/没有响应时(net :: ERR_CONNECTION_REFUSED),它们永远不会被调用。我理解为什么会这样,对拦截没有反应。
我想知道是否存在捕获这些错误的通用方法,而不是为每个请求收听$httpPromise
的{{1}}回调。
答案 0 :(得分:64)
您可以检查ResponseError的状态。当API离线时为0(直到Angular 1.3.18)或-1(自Angular 1.3.19起):
angular.module("services.interceptor", arguments).config(function($httpProvider) {
$httpProvider.interceptors.push(function($q) {
return {
responseError: function(rejection) {
if(rejection.status <= 0) {
window.location = "noresponse.html";
return;
}
return $q.reject(rejection);
}
};
});
});