从控制台节点js读取用户输入N次

read user input N times from console node js

我正在尝试从用户到节点 js 中的控制台进行有限次数的输入,并且 运行 每个输入都有一个函数。 while 或 for 循环不起作用。

有什么帮助吗?

这是我的代码(略微简化):

function foo(num)
{
 console.log(num)
}

function ReadUseInput()
{
 const readline = require('readline').createInterface({
     input: process.stdin,
    output: process.stdout
   }); 
    readline.question('Enter number...', num => 
  {
         foo(num)
       readline.close();
     });
}

//for (var i = 0; i < 10; i++)// this line isnt working - shows warning: MaxListenersExceededWarning: Possible EventEmitter memory leak detected
ReadUseInput()

一个解决方案是让 ReadUseInput() 函数接受一个数字并将其递减以重复一定次数:

function foo(num) {
 console.log(num)
}

function ReadUseInput(timesLeft) {
  // exit condition
  if(timesLeft <= 0) {
    return;
  }
  const readline = require('readline').createInterface({
    input: process.stdin,
    output: process.stdout
  }); 
  readline.question('Enter number...', num => {
    foo(num)
    readline.close();
    ReadUseInput(--timesLeft);
  });
}

ReadUseInput(10);