【问题标题】:Nodejs : execute some instructions in an asynchronous wayNodejs:以异步方式执行一些指令
【发布时间】:2018-06-13 15:21:39
【问题描述】:

我想在 app.js 中的 inst2 之前执行 inst1 :

// config/config.js
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

module.exports= function() {
    console.log("config.js function");
    rl.question('Run in production environnement (Y|N) ?', (answer) => {
        if(answer === "Y")
            process.env.NODE_ENV = 'prod';
        else
            process.env.NODE_ENV = 'dev';
        rl.close();

    });

}


//app.js
const express = require('express');
const app=express();

// inst 1
require('./config/config')();
// inst 2
app.listen(port,()=>{
    console.log(`server started on port ${port}`);
}); 

正如您在此处看到的,我在 config.js 中的函数等待读取控制台输入。 所以我希望 app.listen(..) 等到我的函数的上一条指令结束。

我该如何继续?

【问题讨论】:

    标签: javascript node.js asynchronous listen


    【解决方案1】:

    承诺你的第一个功能:

    module.exports = new Promise(res => {
      console.log("config.js function");
      rl.question('Run in production environnement (Y|N) ?', res);
    }).then(answer => {          
      process.env.NODE_ENV = "Y" ? 'prod' : 'dev';
      rl.close();
    });
    

    所以您可以在app.js 中执行此操作:

    const express = require('express');
    const app = express();
    
    (async function(){     
      await require('./config/config');
    
      app.listen(port, () => {
        console.log(`server started on port ${port}`);
      }); 
    })();
    

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 2013-09-29
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多