Javascript 等待设置数量的if语句继续

Javascript 等待设置数量的if语句继续,javascript,node.js,Javascript,Node.js,我相信一个案例在这里是有效的,并且可能每次都会通过这个案例。基本上,我希望在爆发之前先执行5个命令(除非我执行另一个命令强制它爆发) 它使用node.js和socket.io在index.html页面上使用socket/io.emits 以下是我目前在节点文件中的内容: 我希望它遵循以下模式: 我执行!ff“名称” 他们打字!回答“回答” 答案的状态保持在之前留下的状态,因此其他人可以在稍后的时间提取它。它存储在变量answerState中,但在index.html页面中发生了更改,因为我一直在

我相信一个案例在这里是有效的,并且可能每次都会通过这个案例。基本上,我希望在爆发之前先执行5个命令(除非我执行另一个命令强制它爆发)

它使用node.js和socket.io在index.html页面上使用socket/io.emits

以下是我目前在节点文件中的内容:

我希望它遵循以下模式:

  • 我执行!ff“名称”
  • 他们打字!回答“回答”
  • 答案的状态保持在之前留下的状态,因此其他人可以在稍后的时间提取它。它存储在变量answerState中,但在index.html页面中发生了更改,因为我一直在打开它
  • 在index.html中,我希望每次有人键入时都能看到它!回答%answer%它询问它是否正确,如果正确。那就继续吧。如果没有,退出
  • 努力解决这个问题,看看可能的函数?但即使这样,它也会很快执行该功能

    谢谢编辑

    我可能误解了。如果希望前者运行一次并在以后提取,则变量Answerstate必须是全局变量,否则每次运行代码时都会重新定义并设置为0

    您可以定义您的函数,只要在应答状态<5时调用它即可

    //Commands
    //Define answerState as a global
    var answerState = 0;
    //Define your original function as a variable to insert as an argument to 
    //client.addListener() and pass the answerState argument to it
    var answerQuestion = function (channel, user, message, answerState) {
    
        console.log(user.username + ': ' + message);
        var msg = message;
    
        if (msg.toLowerCase().indexOf("!ff") == 0) {
            var parts = msg.split(" ");
            if(parts.length > 1) {
                parts.shift();
                var player = parts.join(" ");
                client.say(channel, player + " wants to play Family Fortunes!");
            }
            if (answerState < 5) {
               if (msg.toLowerCase().indexOf("!answer") == 0) { 
                    var parts = msg.split(" ");
                    if(parts.length > 1) {
                        parts.shift();
                        var answer = parts.join(" ");
                        io.emit('answer',{player, answer}); 
                        console.log('Going over to index.html | io.emit "answerState" ');
                        //if answer is correct break out of function
                        if (answer === correct) {
                            answerState = 0;
                            return;
                        } 
                        //call the function recursively until answerState = 5
                        else {
                            answerQuestion(channel, user, message, answerState++);
                        }
                    }
                }
            }
        }
    }
    //add your listener and insert answerQuestion as the argument with answerState
    client.addListener('chat', answerQuestion(channel, user, message, answerState));
    
    //命令
    //将应答状态定义为全局
    var-answerState=0;
    //将原始函数定义为要作为参数插入的变量
    //addListener()并将answerState参数传递给它
    var answerQuestion=功能(通道、用户、消息、应答状态){
    console.log(user.username+':'+消息);
    var msg=消息;
    if(msg.toLowerCase().indexOf(“!ff”)==0){
    var parts=msg.split(“”);
    如果(零件长度>1){
    parts.shift();
    var player=parts.join(“”);
    客户。说(频道,玩家+“想玩家族财富游戏!”);
    }
    如果(应答状态<5){
    如果(msg.toLowerCase().indexOf(“!answer”)==0{
    var parts=msg.split(“”);
    如果(零件长度>1){
    parts.shift();
    var answer=parts.join(“”);
    io.emit('answer',{player,answer});
    log('转到index.html | io.emit“answerState”);
    //如果答案正确,则中断功能
    如果(答案===正确){
    应答状态=0;
    回来
    } 
    //递归调用函数,直到answerState=5
    否则{
    answerQuestion(频道、用户、消息、answerState++);
    }
    }
    }
    }
    }
    }
    //添加您的侦听器并插入answerQuestion作为带有answerState的参数
    client.addListener('chat',answerQuestion(频道、用户、消息、answerState));
    
    我之所以避免使用while循环,是因为我听说它会干扰浏览器并导致崩溃。我想我读错了?如果你想以后重新运行代码,而不是一次全部运行并继续调用它,请参阅我的编辑。您可能希望将变量Answerstate声明为函数外部的全局变量。这样,您可以多次运行该函数,而无需将其重置为0。你可以完全避免while或for循环。但我不确定,我还没有听说while循环在浏览器中是危险的。我编辑代码是为了传达可能需要进行的更改,以使代码正常工作。嘿,David,所以,我最终以不同的方式解决了这个问题。现在是两个独立的命令,一个叫!ff初始化我创建的gamestatus变量。如果
    GameStatus=1
    ,那么
    player
    就可以了!将
    io.emit
    发送到html页面的应答。我会勾选你的答案,因为它确实有效。
        player       = {};
        answer       = {};
        socket.on('answer', function (player, answer) {
            console.log('player');
            console.log('answer');
        });
    
    //Commands
    //Define answerState as a global
    var answerState = 0;
    //Define your original function as a variable to insert as an argument to 
    //client.addListener() and pass the answerState argument to it
    var answerQuestion = function (channel, user, message, answerState) {
    
        console.log(user.username + ': ' + message);
        var msg = message;
    
        if (msg.toLowerCase().indexOf("!ff") == 0) {
            var parts = msg.split(" ");
            if(parts.length > 1) {
                parts.shift();
                var player = parts.join(" ");
                client.say(channel, player + " wants to play Family Fortunes!");
            }
            if (answerState < 5) {
               if (msg.toLowerCase().indexOf("!answer") == 0) { 
                    var parts = msg.split(" ");
                    if(parts.length > 1) {
                        parts.shift();
                        var answer = parts.join(" ");
                        io.emit('answer',{player, answer}); 
                        console.log('Going over to index.html | io.emit "answerState" ');
                        //if answer is correct break out of function
                        if (answer === correct) {
                            answerState = 0;
                            return;
                        } 
                        //call the function recursively until answerState = 5
                        else {
                            answerQuestion(channel, user, message, answerState++);
                        }
                    }
                }
            }
        }
    }
    //add your listener and insert answerQuestion as the argument with answerState
    client.addListener('chat', answerQuestion(channel, user, message, answerState));