gpt4 book ai didi

node.js - 如何使用 "process.stdin.on"?

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

我正在尝试理解 process.stdin。

例如 - 我需要在控制台中显示数组元素。我应该允许用户选择要显示的元素。

我有代码:

var arr = ['elem1','elem2','elem3','elem4','elem5'],
lastIndx = arr.length-1;

showArrElem();

function showArrElem () {

console.log('press number from 0 to ' + lastIndx +', or "q" to quit');

process.stdin.on('readable', function (key) {
var key = process.stdin.read();
if (!process.stdin.isRaw) {
process.stdin.setRawMode( true );
} else {
var i = String(key);
if (i == 'q') {
process.exit(0);
} else {
console.log('you press ' +i); // null
console.log('e: ' +arr[i]);
showArrElem();
};
};
});

};

为什么我第二次输入数字时“i”为空?如何正确使用“process.stdin.on”?

最佳答案

您在每个输入字符之后在 process.stdin 上附加了一个可读 监听器,这会导致 process.stdin.read()为每个字符调用一次以上。 stream.Readable.read()process.stdin 的一个实例,如果输入缓冲区中没有数据,则返回 null。要解决此问题,请附加一次监听器。

process.stdin.setRawMode(true);
process.stdin.on('readable', function () {
var key = String(process.stdin.read());
showArrEl(key);
});

function showArrEl (key) {
console.log(arr[key]);
}

或者,您可以使用 process.stdin.once('readable', ...) 附加一个一次性监听器。

关于node.js - 如何使用 "process.stdin.on"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26460324/

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