Как создать функцию для получения ввода с клавиатуры в JavaScript (nodejs) без HTML - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь получить ввод с клавиатуры, вызывая функцию, которая использует встроенный модуль readline, но кажется, что цикл "не ждет" для завершения каждого вызова функции.

Предполагается, что основная функция печатает 4 различных введенных числа.

Я пытался использовать async-await в своей основной функции, но результат был тот же.Асинк-ожидание даже нужно для этого?

Я использую команду node input.js в терминале для запуска программы.Нет HTML.

function getInput(question) {
  var readline = require('readline');

  var rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout
  });
  rl.question(question, function (x) {
    var aString = parseInt(x);
    rl.close();
    entered = true;
    return aString;
  });

}

async function main() {
  var i = 0;
  var myGuess;
  while (i <= 3) {
    myGuess = await getInput("Enter something: ");
    console.log(myGuess);
    i++;
  }
}
main();

Я ожидаю увидеть:

Enter something: 3 // just entering random numbers
3
Enter something: 9
9
Enter something: 12
12
Enter something: 55
55

Но я получаю:

Enter something: undefined
Enter something: undefined
Enter something: undefined
Enter something: undefined
2222                         // I only got to enter 2...



1 Ответ

0 голосов
/ 24 мая 2019

прочитайте, как использовать ожидайте

Оператор ожидания используется для ожидания обещания. Это можно использовать только внутри асинхронной функции.

  return new Promise((resolve, reject) => {
    rl.question(question, function (x) {
      var aString = parseInt(x);
      rl.close();
      entered = true;
      return resolve(aString);
    });
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...