Node.js / Inquirer Неверная подсказка выскакивает по возвращении - PullRequest
0 голосов
/ 12 апреля 2020

У меня небольшая проблема с node.js и запросчиком. Предполагается, что программа

1) запросит а) «введите новое значение» или б) выйдет (с запросчиком / списком)

2) после выбора «ввести новое значение» будет показано второе меню "введите значения для x, y, z или QUIT"? (допустимыми являются «x», «y», «z», «Quit»). Выбор Quit go вернется к (1). Иначе, это будет продолжать спрашивать это второе меню.

Прямо сейчас я все еще думаю об асинхронности / ожидании, и мне удалось придумать следующее:

class obj {
  constructor() {}

async menu1 {
  try {
    const aOrB = await this.enterAorB();
    if (aOrB.choice ==="Quit") {
      this.quit(); // assume this exits
    } else {
      this.menu2();
    }
  } catch (e) {//show error}
}

enterAorB() {
  return inquirer.prompt([{ type:list, name:'choice',
    message:'Enter new value or Quit?',choices: ["Enter New Value","Quit"]}])}

async menu2() {
  try { const xyzOrQuit = await this.getxyzOrQuit();
    if (xyzOrQuit.choice==="Quit") {
      // go back to menu1 upon quitting here
      this.menu1()
    } else {
      //some code here to deal with xyzorQuit = "Enter X", etc.
    }
    // repeat this menu until solved
    this.menu2();
  } catch (e) { // some exception handler}
} 

getxyzorQuit() {
  return inquirer.prompt([{ type:list, name:'choice',
    message:'Enter x, y, z, or Quit?',
    choices: ["Enter X","Enter Y", "Enter Z", "Quit"]}])}
}

Я могу выбрать a) в menu1 без проблем.

Я могу выбрать x, y и z в menu2, нет проблем. Возвращается к menu2, как и планировалось.

Но когда я выбрал выход из меню2 (xyz quit), он снова показал меню2. Menu1 и Menu2 перекрываются на экране, что приводит к беспорядку. Ясно, что программа достигла menu1, так как я могу нажать стрелку вниз один раз, нажать Enter, и программа завершит работу, как и ожидалось. Тем не менее ... что является причиной проблемы, и как я могу это исправить?

Я немного растерялся из-за того, что я здесь сделал неправильно. Логи c кажутся звуковыми. Но, очевидно, я слишком близко к деревьям, чтобы увидеть лес, или как бы метафора ни шла

(и простите за любые опечатки в коде)

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