2016-05-13 66 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