Пропуск значений введенных в консоль c помощью модуля node:readline

Необходимо создать массив из значений введенных в консоль. Каждое значение вводится с новой строки, например:

1
2
3
4
5
6

Но после выполнения кода, в массиве data нет первого и последнего значений:

['2', '3', '4', '5']

Код:

import * as readline from 'node:readline/promises';

const data = [];

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

rl.on('line', (line) => {
    data.push(line);
});

rl.on('close', function () {
    console.log(data);
});

await rl.question("Enter numbers: ");

Почему в массив data не попадают значения 1 и 6?


Ответы (1 шт):

Автор решения: ksa

Но после выполнения кода, в массиве data нет первого и последнего значений

Твое первое значение "ворует" сам rl.question("Enter numbers: ")...

После последнего так же нужно нажать Enter. Тогда оно будет в массиве.

const readline = require('node:readline/promises')

const data = [];
(async _ => {
    const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout,
    });

    rl.on('line', line => {
        data.push(line);
    });

    rl.on('close', _ => {
        console.log(data);
    });

    const str = await rl.question("Enter numbers: ");   
    data.push(str);
})()
→ Ссылка