节点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
被调用,当一个承诺履行没有错误)