javascript - Node JS 异步模块初始化模式
问题描述
我需要在模块启动期间异步获取一些数据并将返回值保存为顶级变量。在此变量初始化之前,不应调用模块的其他方法。
所以基本上我需要这样的东西:
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.
}
推荐阅读
- c++11 - 如何在if循环中使用模运算符检查2的正倍数
- c++ - 在 C++ 中使用无序映射时,[] 运算符和擦除函数有什么区别?
- javascript - 在 Windows 上反应安装失败
- javascript - 如何获得限制数量的评论 snoowrap?
- javascript - 在同步调用休息 api 时无法读取未定义的属性
- python - 正确的抽象类实现的属性类型
- android - 如何在另一个片段中访问和使用一个片段的按钮?
- python - 按数据属性 Python 对类实例列表进行排序
- python-3.x - 错误:DMatrix 参数 `enable_categorical` 必须设置为 True
- amazon-web-services - AWS 策略是否会阻止策略中未指定的所有操作?