我正在尝试从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");
});
答案 0 :(得分:2)
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");
}
});