我需要在模块启动期间异步获取一些数据并将返回值保存为顶级变量。在初始化此变量之前,不应调用其他模块方法。
所以基本上我需要这样的东西:
myModule.js
===========
// i can't use await here...
const importantData = await fetch('/my-service');
exports.myMethod = function () {
// do something with importantData
}
所以,
顶级importantData
是承诺
如果有人调用myMethod
方法,那么它应该推迟执行直到顶层const被解析
我不想使用let
解决这个问题的优雅方法是什么?
由于
答案 0 :(得分:2)
您需要使myMethod
异步:
const importantDataPromise = fetch('/my-service');
exports.myMethod = async function () {
const importantData = await importantDataPromise;
... // Do stuff with importantData.
}