2016-05-13 68 views
0

我刚刚进入node.js并从命令行读取输入。Node Js process.stdin

我对以下代码示例有点困惑。

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'

回答

2

连续监听输入不一定使用比手动恢复流更多的资源。这只是处理管道的一种不同方式。

当“end”事件被触发时,“可读”部分停止监听,因为end会关闭流,因此不会有任何可读的内容。

结束事件是结束信号的平移烧制以标准输入(例如一个CTRL/d在UNIX系统上。

+0

是有一个理由使用此模块通过的node.js'readline'模块? – inthenameofmusik

+0

我相信readline被认为是不稳定的,但有效地做同样的事情 – zoubida13