Я использую перехватчики axios для проверки токена аутентификации при каждом запросе.Это отлично работает.Но когда accessToken
равен нулю, getToken()
запускается дважды.Есть ли способ подождать, пока закончится getToken
?Я просто хочу, чтобы getToken
выстрелил один раз.Другие запросы, требующие токена, должны ждать, пока getToken
не будет выполнено.
let isAlreadyFetchingAccessTokenRequest = false;
api.interceptors.request.use(
async config => {
let token = window.localStorage.getItem("accessToken");
if (!isAlreadyFetchingAccessTokenRequest && !token) {
isAlreadyFetchingAccessTokenRequest = true;
token = await getToken();
console.log("1. save token to local storage", token);
window.localStorage.setItem("accessToken", token);
}
config.headers.Authorization = `Bearer ${token}`;
return config;
},
function(error) {
return Promise.reject(error);
}
);