Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS:执行相应功能后如何重新显示自定义CLI菜单_Javascript_Node.js_Command Line Interface - Fatal编程技术网

Javascript NodeJS:执行相应功能后如何重新显示自定义CLI菜单

Javascript NodeJS:执行相应功能后如何重新显示自定义CLI菜单,javascript,node.js,command-line-interface,Javascript,Node.js,Command Line Interface,我来自低级编程背景,因此JS和NodeJS对我来说是一个新领域 我正在尝试创建一个应用程序,它首先向用户显示CLI菜单。用户选择菜单选项后,将执行相应的功能。一旦该功能完成,我希望重新显示菜单 在Python和embedded C中处理这个问题的一个非常简单的方法是将菜单包含在while(1)循环中,然后在用户选择相应的菜单选项时终止程序/脚本过程。然而,在NodeJS中,您不能在while(1)循环中运行菜单——与每个菜单选项对应的调用函数实际上从未被调用,菜单只是立即重新显示 换句话说,No

我来自低级编程背景,因此JS和NodeJS对我来说是一个新领域

我正在尝试创建一个应用程序,它首先向用户显示CLI菜单。用户选择菜单选项后,将执行相应的功能。一旦该功能完成,我希望重新显示菜单

在Python和embedded 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
  }
}
你可以用

我举了一个例子,如果你在
问题中回答,这个例子会不断循环

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();