Как прочитать несколько строк несколько раз из стандартного ввода в Node.js? - PullRequest
0 голосов
/ 16 сентября 2018

Я создал эту функцию для чтения нескольких строк из стандартного ввода:

async function readLines() {
  const io = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    terminal: false
  });

  const lines = [];
  io.on('line', line => lines.push(line));

  let endOfFile;
  io.on('close', () => endOfFile(lines));
  return new Promise(resolve => endOfFile = resolve);
}

Когда я вызываю эту функцию несколько раз, как это:

(async () => {

  console.log(await readLines());
  console.log(await readLines());

})().catch(console.error);

и пытаюсь закончить чтениестрок, нажав Ctrl+D, только стандартный вызов читает со стандартного ввода, любые последующие вызовы игнорируются.

Возможно ли как-то повторно открыть стандартный ввод, чтобы иметь возможность вызывать эту функцию более одного раза?

Или, чтобы задать другой вопрос: почему node.js закрывает стандартный ввод после нажатия комбинации клавиш Ctrl+D?

Другие языки, такие как ruby ​​или python, позволяют читать со стандартного ввода после нажатияCtrl+D.Например, следующий код, написанный на ruby, работает должным образом:

def read_lines
    lines = []
    while line = gets
        lines << line.chomp
    end
    lines
end

pp read_lines
pp read_lines

Почему node.js ведет себя по-разному?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...