2014-10-13 13 views
7

Chciałbym poprosić użytkownika o wprowadzenie danych, pozwolić użytkownikowi wprowadzić wiele linii tekstu, wciskając Enter pomiędzy każdą linią, a następnie przerwać wprowadzanie naciskając CTRL + D lub coś takiego.Wejście wielowierszowe Node.js

Za pomocą "keypress", mogę złapać EOF, ale musiałbym ręcznie obsłużyć wszystkie operacje echa, obsługi backspace, sekwencji końcowych itd. Byłoby znacznie lepiej, gdybym mógł użyć "readline", ale jakoś przechwycić CTRL + D (EOF) za pomocą "keypress", ale nie jestem pewien, jak bym to zrobił.

Odpowiedz

10

Można użyć line i close zdarzenia:

var readline = require('readline'); 

var input = []; 

var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 
}); 

rl.prompt(); 

rl.on('line', function (cmd) { 

    input.push(cmd); 
}); 

rl.on('close', function (cmd) { 

    console.log(input.join('\n')); 
    process.exit(0); 
});