一尘不染

Angular.js $ http拦截“ net :: ERR_CONNECTION_REFUSED”

angularjs

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

我放置了拦截器'response''responseError'但是当服务器处于脱机状态/未响应时,它们从未被调用(net ::
ERR_CONNECTION_REFUSED)。我了解为什么会发生这种情况,因此没有响应可拦截。

我想知道是否有捕获这些错误的一个通用的方法,比听其他$httpPromiseerror回调为每个请求。


阅读 318

收藏
2020-07-04

共1个答案

一尘不染

您可能可以检查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);
            }
        };
    });
});
2020-07-04