节点js – 如何在节点js中等待用户input的同时暂停后续代码行的执行

我是新来的node.js和飞行中学习。 我已经写了一个代码来提示从CLI CLIinput超时。 问题在于,在等待用户input时,后续的代码行被执行,而不是暂停。 我如何在节点中实现这一点。 以下是我的代码

var readline = require('readline'); var rl = readline.createInterface({ input: process.stdin, output: process.stdout }); waitForUserInput = function (timeout) { var timer = setTimeout(function () { console.log("Process Resumed.."); rl.close(); }, timeout); rl.question("Press Enter to Continue..!!", function () { console.log("Process Resumed.."); clearTimeout(timer); rl.close(); });} 

方法调用是

 waitForUserInput(5000); 

截至目前,如果我做一个console.log(“你好”); 输出是

过程已暂停。 按Enter键继续..! 你好

只有在用户input或超时后才需要console.log消息。

你永远不应该停止执行一个Node.js进程。 Node.jsbuild立在EventLoop 。 在Node.js中,您的代码应该asynchronous工作 – 您要求用户input键盘并注册一段代码,一旦用户完成input,代码将被触发。

对于任何types的命令行input,我build议使用Inquirer.js包 。 你应该创build一个prompt并处理用户input在then块( then被调用,当一个承诺履行没有错误)