我目前正在使用NodeJS学习Java脚本,我正在开发一个小程序,该程序反复要求用户输入,并在用户按Enter键后生成文本.
为了实现这一点,我首先考虑对我的主程序流使用一个函数,该函数根据状态参数更改其行为.这也意味着,我以不同的状态递归调用此函数,并在这些调用之间等待用户输入.
它似乎工作得很好,但我知道在某些情况下重复递归可能会导致问题.我想知道,如果这是这样的情况,从理论上讲,如果用户长时间与对话框交互,最终这种方法会导致堆栈溢出.
async function start(status) {
switch (status) {
// StartMenu
case 0:
let input1 = await waitForInput(["1", "2", "3", "exit", "quit"]);
if (["exit", "quit"].includes(input1)) {
return start(2);
} else {
doSomething(input1);
return start(1);
}
// Something
case 1:
let nextAction = await waitForInput(["", "back", "exit", "quit"]);
switch (nextAction) {
case "":
doSomethingElse();
return start(1);
case "back":
return start(0);
case "exit":
case "quit":
return start(2);
}
break;
// Exit/ Quit
case 2:
console.log("Program exiting...");
break;
default:
console.log("Error: invalid status");
break;
}
}
start(0);