我刚刚进入node.js并从命令行读取输入。
我对以下代码示例感到有点困惑。
process.stdin.setEncoding('utf8');
process.stdin.on('readable', () => {
var chunk = process.stdin.read();
if (chunk !== null) {
process.stdout.write(`data: ${chunk}`);
}
});
process.stdin.on('end', () => {
process.stdout.write('end');
});
首先,在旧模式中,需要process.stdin.resume()
才能开始收听。不使用resume()
对性能更有意义吗?这是不是会继续听,使用它不需要用完的处理能力?
另外,我阅读了文档,但我不理解'end'
在这里做了什么。
文档说:
当没有更多数据可供阅读时,此事件将触发。
但是'readable'
总是在听,所以我们永远不会去'end'
?
答案 0 :(得分:3)
持续监听输入并不一定比使用手动恢复流更多地使用资源。它只是处理管道的另一种方式。
"可读"当"结束"事件被触发,因为结束将关闭流,因此不再具有任何可读性。
结束事件是触发到标准输入的结束信号的转换(例如unix系统上的CTRL / D.