javascript - Node JS 异步模块初始化模式

标签 javascript node.js

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

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

myModule.js
===========

// i can't use await here...
const importantData = await fetch('/my-service'); 

exports.myMethod = function () {
    // do something with importantData
}

所以,

  1. 顶级importantData是 promise

  2. 如果有人调用 myMethod 方法,那么它应该推迟它的执行,直到顶级 const 被解析为止

  3. 我不想使用let

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

谢谢

最佳答案

您需要使 myMethod 异步:

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

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

关于javascript - Node JS 异步模块初始化模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50574119/

相关文章:

sql-server - 在 Linux 上使用 Node.js 访问 SQL Server

javascript - 获取纸张下拉菜单的选定值

javascript - 为什么我收到 "Cannot find module ' jsonLogic'"错误?

node.js - 使用 http-node-proxy 创建转发 https 代理

node.js - 默认情况下,Sequelize.js 是否会转义 SQL 注入(inject)的输入?

node.js - 系统中security_token是什么意思, Node 堆快照中全局中native_context是什么意思

node.js - 如何在 Swagger 中编写此正则表达式模式?

Javascript字典性能问题

javascript - 从调度程序填充 Azure 移动服务

javascript - 如何创建 Angular 2 指令来解析主题标签并创建点击事件?