我需要一个令牌传递给 JS 中的不同函数,但它始终未定义。试过回调但不确定如何实现

I need a token to be passed to different functions in JS but it is always undefined. tried Callback but not sure how to implement

这里是 getToken 函数,许多函数都会调用它来执行:

export function getToken() {

     axios.post(tokenUrl, requestData, requestConfig)
         .then((response) => {
             console.log(" TOKEN: "+ response.statusText, response.data)
             token = response.data.token
             return token
         })
         .catch((error) => {
             console.log("TOKEN ERROR: ", error);
         })
}

并且令牌被其他函数(和其他类似函数)使用:

export async function useToken() {

const token = await getToken()
console.log(`${token}`);

let requestConfig = {
    headers: {
       'Authorization': `Bearer ${token}`
    }
};
axios.post(totpUrl, requestData, requestConfig)
   .then((response) => {
        console.log("RESPONSE RECEIVED: ", response)
    })
    .catch((error) => {
        console.log("ERROR: ", error);
    })

}

如果我没看错的话,您是在尝试从异步函数中调用同步函数,这并不像人们期望的那么简单。

尝试在同步函数中使用promise。类似这样的东西(未经测试)应该可以让您在尝试时使用“await”:

function getToken() {
    return new Promise((resolve, reject) => {
        axios.post(tokenUrl, requestData, requestConfig)
         .then((response) => {
             console.log(" TOKEN: "+ response.statusText, response.data)
             token = response.data.token
             resolve(token)
         })
         .catch((error) => reject(error) )      
    });
}

您的函数 getToken 没有 return 令牌。它 return 未定义。只需在 axios 前添加 'return'。