相关疑难解决方法(0)

多个API调用时,只运行一次响应拦截器

我有这样的拦截器

axios.interceptors.response.use(undefined, err=> {
    const error = err.response;
    console.log(error);
    if (error.status===401 && error.config && !error.config.__isRetryRequest) {
        return axios.post(Config.oauthUrl + '/token', 'grant_type=refresh_token&refresh_token='+refreshToken,
            { headers: {
          'Authorization': 'Basic ' + btoa(Config.clientId + ':' + Config.clientSecret),
          'Content-Type': 'application/x-www-form-urlencoded,charset=UTF-8'
         }
       })
        .then(response => {
          saveTokens(response.data)
          error.config.__isRetryRequest = true;
          return axios(error.config)
        })
      } 
  })
Run Code Online (Sandbox Code Playgroud)

一切正常,但如果我在我的情况下喜欢在一个React组件上进行4次API调用,并且发生此错误,则相同的代码将运行4次,这意味着4次我将发送刷新令牌并获取身份验证令牌,并且我希望显然只运行一次

javascript asynchronous promise reactjs axios

6
推荐指数
1
解决办法
2717
查看次数

标签 统计

asynchronous ×1

axios ×1

javascript ×1

promise ×1

reactjs ×1