Javascript 在发出进一步的ajax请求之前,请等待令牌

Javascript 在发出进一步的ajax请求之前,请等待令牌,javascript,asynchronous,axios,Javascript,Asynchronous,Axios,我正在使用一个包装API的类。它正在利用Axios。为了向API发出请求,我需要一个JWT令牌,该令牌使用API密钥通过另一个请求检索: async setAuthorizationHeader() { const res = await this.Axios.post('/login', { api_key: '' }); this.AuthToken = res.data.token this.Axios.defaults.headers.c

我正在使用一个包装API的类。它正在利用Axios。为了向API发出请求,我需要一个JWT令牌,该令牌使用API密钥通过另一个请求检索:

async setAuthorizationHeader() {
    const res = await this.Axios.post('/login', {
        api_key: ''
    });

    this.AuthToken = res.data.token
    this.Axios.defaults.headers.common['Authorization'] = `Bearer ${res.data.token}`
}
一旦加载了脚本并且构造函数中运行了
setAuthorizationHeader
方法,该类就会被实例化,因此它会在开始时发送一个登录请求。我的问题是,如果我想在页面加载上运行另一个API调用,我不能,因为我将收到401,因为我们还没有得到令牌

下面是类中的另一个方法,我也将在页面加载时运行该方法:

async getPromotions() {
    const response = await this.Axios({
        method: 'POST',
        url: '/promotions',
        data: {
            ...this.baseData,
        }
    })

    return response.data
}
在运行
getPromotions
请求之前,是否有任何方法等待授权步骤完成

  • 您可以将关于令牌获取的承诺存储为API对象的一部分
  • 描述所有其他API调用,如 API.tokenLoadingPromise.then(token=>//使用axios进行调用

  • 通过这种方式,您可以确保只有在检索到令牌之后才执行所有调用。

    So的可能重复,
    await setAuthorizationHeader();await getPromotions()
    ?@Bergi当我使用时,我实际接收到“不能在异步函数外使用关键字'await'”请向我们展示如何以及在何处运行这些函数。“
    setAuthorizationHeader
    方法在构造函数中运行”-这实际上就是我最后要做的。感谢您的帮助