gpt4 book ai didi

javascript - Node.js 程序不会停止从标准输入读取

转载 作者:搜寻专家 更新时间:2023-10-31 23:48:04 24 4
gpt4 key购买 nike

我正在尝试从 stdin 读取用户输入,在我的例子中,两个输入分别输入不同的行。但是,当我运行以下代码 (node program.js) 时,它允许我输入第一个值,然后我单击 enter 并输入第二个值,但是当我单击 enter 时,它不会运行我程序的其余部分。我如何告诉它停止阅读并继续?

process.stdin.resume();
process.stdin.setEncoding("ascii");
var input = "";
process.stdin.on("data", function (chunk) {
input += chunk;
});

process.stdin.on("end", function () {
lines = input.split("\n");
var numVals = lines[0];
process.stdout.write(numVals + "\n");
var vals = lines[1];
process.stdout.write(vals+"\n");
});

最佳答案

Readable Streams在触发 "end" 事件之前需要一个 EOT(传输结束)字符。在 bash 中,这可以使用 CTRL+D 来完成。如果你想在 2 个换行符后明确停止,试试这个:

process.stdin.resume();
process.stdin.setEncoding("ascii");

var input = "";

process.stdin.on("data", function (chunk) {

input += chunk;

var lines = input.split("\n");

//If there have been 2 line breaks
if (lines.length > 2) {

//Stop reading input
process.stdin.pause();

//Process data
var numVals = lines[0];
process.stdout.write(numVals + "\n");

var vals = lines[1];
process.stdout.write(vals+"\n");
}
});

不过,您正在重新发明轮子。行输入通常使用 readline 处理或 prompt模块。

关于javascript - Node.js 程序不会停止从标准输入读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29335325/

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