小编Dev*_*han的帖子

如何针对 401 错误的多个请求运行 axios 拦截器一次?

我已经为我的食品应用程序设置了 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)

javascript frontend promise reactjs axios

2
推荐指数
1
解决办法
2514
查看次数

标签 统计

axios ×1

frontend ×1

javascript ×1

promise ×1

reactjs ×1