Node JS异步模块初始化模式

时间:2018-05-28 22:33:32

标签: 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是承诺

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

  3. 我不想使用let

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

    由于

1 个答案:

答案 0 :(得分:2)

您需要使myMethod异步:

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

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