接受用户的多个输入

时间:2019-01-25 16:21:56

标签: javascript node.js

我想从用户那里得到用户输入。我已经创建了一个函数,通过从node.js文档中获取代码来做到这一点。但是我无法收到多个用户输入。我怎样才能做到这一点?到目前为止,这是代码。

function getUserInput() {
        rl.question('Please input a letter: ', (answer) => {
        console.log('Letter entered: ${answer}');
        rl.close();
        }); 
    }

//getUserInput();

var k=0; 
while ( k < 3 ){
        getUserInput();
        k++;
    } 

我希望以3个用户输入为例。我想接受用户输入。使用上面的代码,我只能接受一个用户输入。我以为将函数添加到循环中可以正常工作。我正在寻找对我的代码进行的任何修改,以便可以正常工作,因此我可以接受多个用户输入。

3 个答案:

答案 0 :(得分:0)

Inquirer可能就是您想要的,假设您试图在命令行上获取用户输入。

从存储库本身获取的描述:

  

Inquirer.js致力于成为Node.js(也许还有“ CLI Xanadu”)的易于嵌入且美观的命令行界面。

     

Inquirer.js应该简化

的过程      
      
  • 提供错误反馈
  •   
  • 提出问题
  •   
  • 解析输入
  •   
  • 验证答案
  •   
  • 管理分层提示
  •   

此外,这是一个有关如何使用它的示例:

const inquirer = require('inquirer');

const questions = [
  {
    type: 'input',
    name: 'first_name',
    message: "What's your first name"
  }, {
    type: 'input',
    name: 'last_name',
    message: "What's your last name",
    default: function() {
      return 'Doe';
    }
  }
];

inquirer.prompt(questions).then(answers => {
  console.log(JSON.stringify(answers, null, '  '));
});

干杯。

答案 1 :(得分:0)

这似乎正在使用诸如promises API之类的东西。

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


function getUserInput(n) {
    rl.question('Please input a letter: ', (answer) => {
        console.log(`Letter entered: ${answer}`);
        if (n < 3) {
            getUserInput(n+1);
        } else {
            rl.close();
        }
    }); 
}

getUserInput(1);

当我运行它时,会发生这种情况:

$ node getinput.js
Please input a letter: a
Letter entered: a
Please input a letter: b
Letter entered: b
Please input a letter: c
Letter entered: c

答案 2 :(得分:0)

我认为问题在于rl.question在继续进行之前等待输入,而while循环则没有。我认为这是一个简单的节点cli,它可以满足您的需求。只需将此代码保存在名为index.js的文件中,然后转到目录并键入:node index.js

 // Dependencies
 var readline = require('readline');

 var cli = {};

 // Init function
 cli.init = function(){
   // Send the start message to the console in magenta
   console.log('\x1b[35m%s\x1b[0m',"The CLI is running");

   // Start the interface
   var _interface = readline.createInterface({
     input: process.stdin,
     output : process.stdout,
     prompt : '>'
   });

   var arrayOfInputs = [];
   var k = 0;
   var max = 3;
   cli.getUserInput = function(){
     _interface.question("Ask Something? ", function(str){
       k++;
      arrayOfInputs.push(str);
      if(k < max){
        cli.getUserInput();
      } else {
        console.log(...arrayOfInputs);
      }
    });
   };

   cli.getUserInput();

 };

 cli.init();
相关问题