gpt4 book ai didi

javascript - 使用 process.stdin 在 Node.js 中接受来自终端的动态输入时出现问题

转载 作者:行者123 更新时间:2023-11-28 05:43:18 25 4
gpt4 key购买 nike

我已经在这个问题上工作了很长时间,并且浏览了很多网站,但没有找到令人信服的答案。让我解释一下我的要求。我想接受来自终端的输入,使用这些输入运行一组指令,然后使用 nodejs 中的 process.stdin 再次接受来自终端的新输入集。

请在下面找到我的示例代码。请指出我的错误以及更好的说明方式,这将帮助我更好地学习。

input();
console.log("Completed 1");
input();
function input()
{
process.stdin.setEncoding('utf8');
process.stdin.resume();
process.stdin.on('data',function(text){
console.log("Type: " + typeof text);
if(text == "quit"){
console.log("Inside if");
done();
}
console.log("Received: " + text);
});
}

function done(){
console.log("Exiting");
process.exit();
}

当我运行此代码时,如果我的输入是“quit”,则该文本不会被匹配,并且不会输入 if 条件。它继续接受任何事物。

最佳答案

您输入的字符串末尾有一个换行符:

退出\n

在您的条件中提供这一点将解决此问题。看这个documentation例如。

input();
console.log("Completed 1");
input();
function input()
{
process.stdin.setEncoding('utf8');
process.stdin.resume();
process.stdin.on('data',function(text){
console.log("Type: " + typeof text);
if(text === "quit\n"){
console.log("Inside if");
done();
}
console.log("Received: " + text);
});
}

function done(){
console.log("Exiting");
process.exit();
}

编辑:要解决您的第二个问题,请参阅流程文档。解决方案很清楚。将回调转回“退出”事件。该回调中只允许使用同步代码。

function input() {
process.stdin.setEncoding('utf8');
process.stdin.resume();
process.stdin.on('data',function(text){
console.log("Type: " + typeof text);
if(text === "quit\n"){
console.log("Inside if");
done();
}
console.log("Received: " + text);
});
process.on('exit', (code) => {
console.log('got to it');
}); }

关于javascript - 使用 process.stdin 在 Node.js 中接受来自终端的动态输入时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38746179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com