Javascript 带有readline的函数在获得响应(Node.Js)之前在for循环中运行
当我想制作一个程序,根据用户需要的数量进行提示时。我已经找到了提示和输入,问题是当for循环运行时,它会多次询问这个问题,而不是等待响应。我的代码:Javascript 带有readline的函数在获得响应(Node.Js)之前在for循环中运行,javascript,node.js,for-loop,readline,Javascript,Node.js,For Loop,Readline,当我想制作一个程序,根据用户需要的数量进行提示时。我已经找到了提示和输入,问题是当for循环运行时,它会多次询问这个问题,而不是等待响应。我的代码: function mainLoop(auth, num){ var i; for (i = 1; i <= numOfPrompts; i++){ ask(auth); //Create the prompts (unrealated) } } function ask(auth){
function mainLoop(auth, num){
var i;
for (i = 1; i <= numOfPrompts; i++){
ask(auth);
//Create the prompts (unrealated)
}
}
function ask(auth){
const r3 = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
r3.question("Do you like pie [Y/N]? ", (ans) => {
ansCheck(auth, ans);
});
}
function ansCheck(auth, ans){
if (ans == "y" || ans == "yes"){
variable = true;
}else if (ans == "n" || ans == "no"){
variable = false;
}else{
console.log("Invalid answer\n");
ask(auth);
}
}
我需要输出为:
Do you like pie [Y/N]?
等待答案…输入答案,检查答案…检查答案,做不相关的事情…需要时重复
感谢您提供的帮助。读线是异步的,因此不应使用循环 在收到有效响应后,从ansCheck调用ask,就像您对无效答案所做的那样,但在计数器>=numSongs时增加计数器并停止调用 另一种解决方案是promisify ask,并在循环中使用async/await
Do you like pie [Y/N]?