节点js - 如何在节点js

时间:2016-06-27 19:13:57

标签: javascript node.js user-input readline

我是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消息。

1 个答案:

答案 0 :(得分:1)

您永远不应该停止执行Node.js进程。 Node.js构建在EventLoop之上。在Node.js中,您的代码应该异步工作 - 您要求用户输入键盘并注册一段代码,一旦用户完成输入就会触发。

对于任何类型的命令行输入,我建议使用Inquirer.js package。您应该创建一个prompt并处理then块中的用户输入(当承诺完成且没有错误时调用then