2016-05-13 16 views
0

Ich komme gerade in node.js und lesen Eingabe von der Befehlszeile.Node Js process.stdin

Ich bin ein wenig verwirrt im folgenden Codebeispiel.

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'); 
}); 

Zuerst in alten Modus wurde process.stdin.resume() benötigt, um es zu hören zu machen beginnen. Verwenden Sie resume() nicht mehr sinnvoll für die Leistung? Hören Sie nicht ständig zu, verbrauchen Sie Verarbeitungsleistung, die nicht aufgebraucht werden muss?

Auch ich lese die Dokumente, aber ich verstehe nicht, was tut hier.

Die docs sagen:

Dieses Ereignis wird ausgelöst, wenn wird es keine weiteren Daten werden gelesen.

Aber 'readable' immer hört so nie wir zum 'end' bekommen?

Antwort

2

Kontinuierliche Überwachung der Eingabe erfordert nicht unbedingt mehr Ressourcen als die manuelle Wiederaufnahme des Streams. Es ist nur eine andere Art, mit den Rohren umzugehen.

Der "lesbare" Teil hört auf, wenn das "end" -Ereignis ausgelöst wird, da das Ende den Stream schließt und daher nichts mehr lesbar ist.

Das Ende Ereignis ist eine Übersetzung des Signals Ende mit der Standardeingabe gefeuert (zum Beispiel eines CTRL/D auf einem Unix-System.

+0

gibt es einen Grund, dieses Modul zu verwenden, um über die node.js 'readline' Modul? – inthenameofmusik

+0

Ich glaube, dass Readline als instabil gilt, aber effektiv dasselbe tut – zoubida13