Для начала вызов scanf
и событие data для читаемого потока в NodeJS не эквивалентны. В примере NodeJS вам нужно будет разобрать кусок введенного вами ввода.
Вы можете проверить, как эти куски будут отправлены вам, заменив тело вашего метода on простым:
process.stdout.write('onData: ' + input + '\n');
Учитывая, как input
затем содержит ваши данные, вам нужно использовать какой-либо метод для извлечения интересующей строки, а затем использовать parseInt
. Возможно, наивный подход к вашей проблеме, предполагая 1 целое число на input
:
var n = 0;
var m = 0;
var state = 0;
process.stdin.on('data', function (input) {
switch (state)
{
case 0:
//we're reading 'n'
n = parseInt(input.trim(), 10);
state++;
break;
default:
//we're reading 'm'
m = parseInt(input.trim(), 10);
if (state++ == n)
{
//we've read every 'm'
process.exit();
}
break;
}
});
Я не очень большой поклонник этого способа получения данных в вашем цикле событий NodeJS, вам следует искать аргументы командной строки, файлы конфигурации/ввода или некоторые другие способы.