我尝试找到解决我的问题的方法,但是没能找到,所以我正在寻找一些"最佳实践示例"。我有一个Node.js Express应用程序,我的函数被拆分成文件。例如,我有这个控制器(oktacontroller.js):
var okta_api_key = <here some await data, getting from db>;
const OKTA_ORG_URL = '<here too>';
exports.createUser = async (req, res) => {
console.log(okta_api_key);
}
exports.getGroups = async (req, res) => {
console.log(okta_api_key);
}
在这两个导出的函数中(它们是Express路由),我需要变量okta_api_key。 我知道我可以通过在两个函数中查询它们来获取它们,因为它们是异步函数,我可以在那里使用await,但是每次查询这个变量都感觉很愚蠢(因为它永远不会改变)。
我该如何处理? 我知道可以这样做:
var okta_api_key;
(async () => {
okta_api_key = await <getting key async>
})()
但是这种感觉也不太对...
有没有办法创建一个异步的大函数,并导出这两个函数?换句话说:如何在文件(模块)顶层使用await。它不一定需要在顶层(这是不可能的),但我需要一些方法将我的“顶层”变量暴露给我的导出函数。
编辑:因为我得到了将其放入配置文件中的建议,所以还有其他用例。对于这个用例,是可能的,但是例如:我有一些其他的API密钥,它从服务本身获取访问令牌,在每次启动时(因为它会过期)。该令牌不能存储在配置文件中,因此我需要一些异步工作来获取该值。我知道顶级等待不起作用(甚至不可取),但如果这是您的项目,我只想要一个示例来展示您们如何实现此操作:)
okta_api_key
设置为一个Promise,您可以多次等待它而不必重复执行异步任务。 - Kevin B