У меня небольшая проблема с 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 кажутся звуковыми. Но, очевидно, я слишком близко к деревьям, чтобы увидеть лес, или как бы метафора ни шла
(и простите за любые опечатки в коде)