我正在尝试使用$http's拦截器为我的网站编写一个通用错误处理程序,但它们似乎无法执行我想做的事情。
$http'
我放置了拦截器'response','responseError'但是当服务器处于脱机状态/未响应时,它们从未被调用(net :: ERR_CONNECTION_REFUSED)。我了解为什么会发生这种情况,因此没有响应可拦截。
'response'
'responseError'
我想知道是否有捕获这些错误的一个通用的方法,比听其他$httpPromise的error回调为每个请求。
$httpPromise
error
您可能可以检查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); } }; }); });