javascript - Nodejs : execute some instructions in an asynchronous way

标签 javascript node.js asynchronous listen

我想在 app.js 中先执行 inst1,再执行 inst2:

// 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(..) 等待,直到上一条指令(即我的函数)结束。

我该如何继续?

最佳答案

promise 你的第一个功能:

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}`);
  }); 
})();

关于javascript - Nodejs : execute some instructions in an asynchronous way,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48086057/

相关文章:

javascript - 如何获取谷歌地图apiv3中新编辑的多边形坐标

javascript - 从包含姓名的字符串中获取姓名缩写和完整姓氏

python - IPython:在后台异步运行命令

javascript - 无法使用 Three.js 创建 3D 平面

javascript - jQuery 输入参数未定义

javascript - 如何在 Node JS 中存储大型 Twitter 个人资料 ID

javascript - Node Javascript 的这一行条件有什么问题?

node.js - Zombie.js 浏览器未返回完整的 html?

c++ - 交流 emacs 和 C++ 代码

android - 检查 Activity 是否已完成加载所有数据而不更改应用程序代码