Angular.js $ http拦截" net :: ERR_CONNECTION_REFUSED"

时间:2014-05-28 14:48:30

标签: javascript angularjs http interceptor

我正在尝试使用$http'拦截器为我的网站编写一个通用的错误处理程序,但它们似乎无法做我想做的事。

我在'response''responseError'上放置了拦截器,但是当服务器脱机/没有响应时(net :: ERR_CONNECTION_REFUSED),它们永远不会被调用。我理解为什么会这样,对拦截没有反应。

我想知道是否存在捕获这些错误的通用方法,而不是为每个请求收听$httpPromise的{​​{1}}回调。

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);
            }
        };
    });
});