NodeJS: Как повторно отобразить пользовательское меню CLI после выполнения соответствующей функциональности - PullRequest
1 голос
/ 18 октября 2019

Я пришел из низкоуровневого программирования, поэтому JS и NodeJS - это новая сфера для меня.

Я пытаюсь создать приложение, которое начинается с отображения меню CLI для пользователя. После того, как пользователь выберет опцию меню, будут выполнены соответствующие функции. Как только эта функциональность завершится, я хочу, чтобы меню снова отображалось.

Очень простой способ обработки этого в Python и встроенном C - заключить меню в цикл while (1), а затем завершить программу/ скрипт, когда пользователь выбирает соответствующую опцию меню. Однако в NodeJS вы не можете запустить меню в цикле while (1) - функции, вызываемые в соответствии с каждым параметром меню, фактически никогда не вызываются, и меню просто сразу отображается заново.

Другими словами,что эквивалентно NodeJS:

while(1) {
  displayMenuToUser();
  // Wait for user to select which menu option they want
  if (quitMenuOptionSelectedByUser) {
    terminateProcess();
  } else {
    executeFunctionCorrespondingToTheSelectedMenuOption();
    // At this point the menu should be re-displayed so the user can select another option
  }
}

1 Ответ

0 голосов
/ 18 октября 2019

Вы можете использовать Inquirer.js

Я сделал этот пример, который продолжает цикл, если вы отвечаете да на вопрос Go again?:

var inquirer = require('inquirer');

const showMenu = () => {
    inquirer
    .prompt([{
        name: 'age',
        type: 'input',
        message: 'What\'s your age?',
    }, {
        name: 'country',
        type: 'list',
        message: 'Where do you live?',
        choices: ['USA', 'China', 'Germany', 'France'],
    }, {
        name: 'back',
        type: 'input',
        message: 'Go again?',
        choices: ['yes', 'no'],
    }]
    ).then((answers) => {
        console.log(`\nMy age is ${answers.age} and I live in ${answers.country}.\n`);
        if (answers.back === 'yes') {
            return showMenu();
        }
    })
    .catch((err) => {
        console.log(err);
    });
}

showMenu();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...