我需要在模块启动期间强制获取一些数据,并将返回值保存为顶级变量。在初始化此变量之前,不应调用模块的其他方法。

所以基本上我需要这样的东西:

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


解决这个问题的优雅方法是什么?

谢谢

最佳答案

您将需要使myMethod异步:

const importantDataPromise = fetch('/my-service');

exports.myMethod = async function () {
    const importantData = await importantDataPromise;
    ... // Do stuff with importantData.
}

09-16 13:02