axios拦截器更新身份验证

时间:2019-06-23 22:36:42

标签: axios es6-promise

我正在使用axios拦截器来检查每个请求的身份验证令牌。这很好。但是当from PIL import Image from pytesseract import pytesseract text = pytesseract.image_to_string(Image.open("uploaded_image.png")) print(text) 为空时,accessToken被触发两次。有没有办法等待getToken()完成?我只希望getToken触发一次。需要令牌的其他请求应等待,直到getToken完成。

getToken

1 个答案:

答案 0 :(得分:0)

您可以多次await作出承诺。 所以可以尝试这样的事情

let tokenPromise = null;
api.interceptors.request.use(
  async config => {
    let token = window.localStorage.getItem("accessToken");

    if (!token) {
      if (!tokenPromise) {
        tokenPromise = getToken();
      }
      token = await tokenPromise;

      console.log("1. save token to local storage", token);
      window.localStorage.setItem("accessToken", token);
    }

    config.headers.Authorization = `Bearer ${token}`;
    ...