节点 JS 异步模块初始化模式



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

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

myModule.js
===========
// i can't use await here...
const importantData = await fetch('/my-service'); 
exports.myMethod = function () {
// do something with importantData
}

所以

  1. 顶级importantData就是承诺

  2. 如果有人调用myMethod方法,那么它应该推迟执行,直到解析顶级常量

  3. 我不想使用let

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

谢谢

您需要使myMethod异步:

const importantDataPromise = fetch('/my-service'); 
exports.myMethod = async function () {
const importantData = await importantDataPromise;
... // Do stuff with importantData.
}

最新更新