我想了解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();
};
};
});
};
Run Code Online (Sandbox Code Playgroud)
当我第二次输入数字时,为什么"i"为空?如何正确使用"process.stdin.on"?
你在每个输入字符后附加一个readable监听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]);
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用附加一次性监听器process.stdin.once('readable', ...).
| 归档时间: |
|
| 查看次数: |
19620 次 |
| 最近记录: |