繁体   English   中英

节点js - 如何在等待节点js中的用户输入时暂停后续代码行的执行

[英]Node js - How to pause execution of subsequent lines of code while waiting for user input in node js

我是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(“你好”); 输出是

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

我只想在用户输入或超时后才能获得console.log消息。

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

对于任何类型的命令行输入,我建议使用Inquirer.js包 您应该创建一个prompt并在then块中处理用户输入( then在履行没有错误的情况下调用)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM