代码之家  ›  专栏  ›  技术社区  ›  Eddy

在node.js应用程序中,如何先运行流程,然后再运行其他流程?

  •  1
  • Eddy  · 技术社区  · 7 年前

    我想 decrypt 几个 config 基于环境变量的项,在 Node.js 应用程序。

    我正在使用标准启动我的应用程序 node ./app.js . 然后我从 app.js 文件:

    function setConfig() {
        var pass = process.env.pass;
        var conf = Encrypt.decrypt(encryptedConfig, pass);
        var configObj = JSON.parse(conf);
        // do stuff with the configObj
    }
    

    这很好,但既然一切都是 async 其他需要配置变量的进程已经在运行并抛出错误。

    我想要的是运行我的 setConfig() 在其他事情之前。这可行吗?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Estus Flask    7 年前

    如果一个例程是同步的,它可以在依赖它的例程之前执行。在主模块顶部执行任何其他操作之前执行它可以确保不存在竞争条件:

    setConfig();
    require('module-that-depends-on-config');
    

    如果一个例程是异步的,那么应该这样对待它,以避免出现争用条件。对于所有异步例程来说,最好返回承诺,这样它们就可以与 async 主模块功能:

    (async () => {
      await setConfigAsync();
      require('module-that-depends-on-config');
      ...
    })().catch(console.error);
    
    推荐文章