我编写了一个拦截器,当响应错误时,如果本地存储中存在状态代码和访问令牌,则重试 HTTP 请求。
我写这篇文章主要是为了应对来自我们正在使用的 API 的神秘失败的响应(我无法控制),因为在某些情况下重试就足够了。有时 API 端点会无缘无故地失败,所以我想,由于我无法控制 API 的维护,我只能重试发送 HTTP 请求。
primesis.factory('httpResponseErrorInterceptor', function ($q, $injector) {
return {
'responseError': function (response) {
if(response.status === 500 && localStorage.getItem('token')) {
var $http = $injector.get('$http');
return $http(response.config);
}
return $q.reject(response);
}
};
});
$httpProvider.interceptors.push('httpResponseErrorInterceptor');
但是,在 API 中确实存在错误的情况下,这会导致拦截器无限重试。
我想要实现的是限制此拦截器的重试次数。我试过在里面放一个计数器,但似乎计数器没有继续下一个拦截器调用。
我一直在寻找可以解决这种情况但无济于事的东西。有没有办法限制拦截器响应错误重试?