簡體   English   中英

接受用戶的多個輸入

[英]Take multiple inputs from user

我想從用戶那里獲得用戶輸入。 我已經創建了一個函數,通過從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個用戶輸入為例。 我想接受用戶輸入。 使用上面的代碼,我只能接受一個用戶輸入。 我以為將函數添加到循環中可以正常工作。 我正在尋找對我的代碼進行的任何修改,以便它可以正常工作,因此我可以接受多個用戶輸入。

假設您試圖在命令行上獲取用戶輸入,那么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, '  '));
});

干杯。

這似乎正在使用諸如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

我認為問題在於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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM