我已经为我的食品应用程序设置了 axios 和 react-query 。我只想为 2 个以上的并行请求实现一次刷新令牌,并重试所有挂起的失败请求。我在网上搜索了很多解决方案,尝试了它们,但没有一个起作用。这是我的代码参考。
let isRefreshing = false;
let failedQueue = [];
async function refreshToken() {
const response = await normalRoute.post("/users/refresh");
return response.data.accessToken;
}
privateRoute.interceptors.response.use(
(response) => response,
async (error) => {
if (error.response.status === 401) {
failedQueue.push(error.config);
if (!isRefreshing) {
isRefreshing = true;
const token = await refreshToken();
store.dispatch(setAccessToken(token));
const promsieArray = failedQueue.map((config) => {
config.headers.authorization = `Bearer ${token}`;
return privateRoute(config);
});
failedQueue = [];
return Promise.resolve(promsieArray);
}
}
}
);
Run Code Online (Sandbox Code Playgroud)