javascript - 将从另一个文件导入的异步函数的返回值存储为可以在 elseware 中引用的变量
问题描述
我正在使用 Azure rest api。调用 Azure Rest API 时的第一个任务是您需要获取访问/持有者令牌。
我所做的是我有一个名为 utils.js 的文件,其中包含以下异步函数。
实用程序.js
async function get_bearer_token(tenant_id, client_id, client_secret) {
console.log('Getting Bearer Token');
let token_url = `https://login.microsoftonline.com/${tenant_id}/oauth2/token`;
let data = {
'resource': 'https://management.core.windows.net',
'client_id': client_id,
'client_secret': client_secret,
'grant_type': 'client_credentials'
};
let config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
let bearer_token;
await axios.post(token_url, qs.stringify(data), config).then(({data}) => {
bearer_token = data.access_token});
return bearer_token;
};
这可以正常工作并按预期返回 Bearer_token。我的问题,对于 JS 来说是全新的并将其用作培训练习,是我有我的主代码文件,我已经将此函数导入该文件并尝试取回不记名令牌。
我只会以未决的承诺告终。我正在尝试做一些事情,例如:
let bearer_token;
get_bearer_token(process.env.TENANT_ID, process.env.CLIENT_ID, process.env.CLIENT_SECRET).then(data => {bearer_token = data});
console.log(bearer_token);
我将多次需要这个不记名令牌来完成我的其他任务。上面的代码从函数调用返回一个未决的承诺,但当我尝试在此之后记录变量时未定义。我可以让这一切正常工作,但我最终陷入了回调地狱,我很肯定必须有更好的方法,我只是看不到它。
如何将一个文件中的异步函数的返回值设置为另一个文件中我实际调用此异步函数的变量?
解决方案
推荐阅读
- date - 有没有办法将两种不同的 dateTime 格式解析为 Java 中的 LocalDateTime 或 Instant?
- javascript - 如何在 Electron 中使用 GET 变量重定向到另一个 HTML 文件?
- r - 如何评估字符串是否是R中的英文单词
- db2 - COBOL DB2 绑定过程
- java - Java:ClassNotFound 类路径问题
- javascript - 如何在 webgl 中用纹理相等地包裹四边形
- c# - 重新启动后自动启动 Microsoft Reporting Services
- c# - 在不退出循环 C# 的情况下验证来自控制台的输入值
- reactjs - 在功能组件中返回 React.createElement 时,“函数作为反应子无效”
- r - 尝试用管道代替for-loop(结果不一样)