Как остановить пользовательский ввод в JS

Рейтинг: 0Ответов: 1Опубликовано: 06.08.2023

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

const readline = require('readline');
 
const rl = readline.createInterface({
    input: process.stdin
});

let lines = [];

rl.on('line', (line) => {
    lines.push(line);
}).on('close', () => {
    let [count, maxLen] = [0, 0];
    for (let i = 1; i < lines.length; i++) {
        if (lines[i] === '1') {
            count++;
            maxLen = maxLen < count ? count : maxLen;
        } else {
            count = 0;
        }
    }

    console.log(maxLen);
});

Подскажите, пожалуйста, как все таки можно завершить пользовательский ввод.

Ответы

▲ 0Принят

Для остановки пользовательского ввода в Node.js вы можете использовать комбинацию клавиш Ctrl + C. Это прервет работу программы и завершит ввод.

Однако, вы также можете контролировать ввод пользователей и остановить его с помощью условия или специальной команды.

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

const readline = require('readline');
 
const rl = readline.createInterface({
    input: process.stdin
});

let lines = ;

rl.on('line', (line) => {
    if (line === 'exit') {
        rl.close(); // принудительно останавливаем ввод
        return; // прерываем обработку события
    }
    lines.push(line);
}).on('close', () => {
    let count, maxLen = 0, 0;
    for (let i = 1; i < lines.length; i++) {
        if (linesi === '1') {
            count++;
            maxLen = maxLen < count ? count : maxLen;
        } else {
            count = 0;
        }
    }

    console.log(maxLen);
});

Теперь, если пользователь введет "exit", то выполнение программы будет завершено, и будет выведен результат обработки.