我目前正在使用以下代码重新抛出从我的 API 返回 401 的请求:
responseError: function(rejection) {
var authData = localStorageService.get('authorizationData');
if (rejection.status === 401 && authData) {
var authService = $injector.get('authService');
var $http = $injector.get('$http');
̶v̶a̶r̶ ̶d̶e̶f̶e̶r̶r̶e̶d̶ ̶=̶ ̶$̶q̶.̶d̶e̶f̶e̶r̶(̶)̶;̶
var promise = authService.refreshToken();
return ̶d̶e̶f̶e̶r̶r̶e̶d̶.̶ promise.then(function () {
return $http(rejection.config);
});
}
return $q.reject(rejection);
}
这适用于 1 个请求,但如果我从单个页面返回两个 401,例如当页面加载两个 api 调用以填充不同部分时,它似乎不起作用。如何让我的拦截器重新抛出多个延迟调用?
另外,拦截器不应该为每个 401 单独触发吗?不理想,它会导致单个页面上的多次刷新调用,但由于调用未被重新抛出而导致丢失数据的改进。
截屏: