2016-05-13 3 views
0

Я только сейчас вхожу в node.js и читаю ввод из командной строки.Узел 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», поскольку конец будет закрывать поток, и поэтому больше ничего не будет читаться.

Конца событие является перевод конечного сигнала обжигает для стандартного ввода (например, с CTRL/D в системе UNIX.

+0

есть причина, чтобы использовать этот модуль над node.js 'readline' модуль? – inthenameofmusik

+0

Я считаю, что readline считается нестабильным, но эффективно делает то же самое – zoubida13