我是node.js的新手,并且即时学习它。我编写了一个代码来提示CLI的userinput超时。问题是,在等待用户输入时,后续的代码行被执行而不是暂停。我如何在节点中实现这一点。以下是我的代码
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(" Hello");输出是
进程已暂停。按Enter继续.. !! 你好
我只想在用户输入或超时后才能获得console.log消息。
答案 0 :(得分:1)
您永远不应该停止执行Node.js进程。 Node.js构建在EventLoop
之上。在Node.js中,您的代码应该异步工作 - 您要求用户输入键盘并注册一段代码,一旦用户完成输入就会触发。
对于任何类型的命令行输入,我建议使用Inquirer.js package。您应该创建一个prompt
并处理then
块中的用户输入(当承诺完成且没有错误时调用then
)