首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Axios拦截器不会重试原始呼叫

Axios拦截器不会重试原始呼叫
EN

Stack Overflow用户
提问于 2021-12-31 02:10:39
回答 1查看 1K关注 0票数 1

这是我目前的代码:

代码语言:javascript
复制
axios.interceptors.response.use(
    (response) => {
      return response;
    },
    (error) => {
      const originalRequest = error.config;

      if (error.response.status === 401 && !originalRequest._retry) {
        originalRequest._retry = true;

        axios.get("/auth/token").then((res) => {
          if (res.status === 200) {
            console.log("Access token refreshed");
            return axios(originalRequest);
          }
        });

      } else {
        return Promise.reject(error);
      }
    }
  );

它像预期的那样刷新令牌,但没有重新尝试原始请求。如果请求显示一些数据,我只能在重新加载页面或更改到其他路由并再次返回以重新呈现组件时才能看到它。

根据我的理解,如果原始请求碰到了一个错误401,那么拦截器应该刷新令牌并重试该调用--这将再次触发拦截器,但现在将得到一个成功的响应--并将这个新响应传递回原来的承诺,对吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-31 02:47:52

您需要返回axios函数:

代码语言:javascript
复制
... 

return axios.get("/auth/token").then((res) => {
          if (res.status === 200) {
            console.log("Access token refreshed");
            return axios(originalRequest);
          }
        });
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70538409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档