首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >JS setInterval只执行一次

JS setInterval只执行一次
EN

Stack Overflow用户
提问于 2011-10-13 04:59:33
回答 1查看 21.2K关注 0票数 24

我有以下JS函数:

代码语言:javascript
复制
function checkIfGameAlreadyStarted(){
    $.get("IsGameAlreadyStarted",null,function(gameAlreadyStarted){
        if (gameAlreadyStarted == "true"){
            window.location = "index.jsp?content=game";       
        } else{
            alert("bla");
        }  
    });
}

function joinGame(playerForm){
    $.get("GenerateClientID",null,function(clientID){         
        $.get("JoinGame",{
            "NAME" : playerForm.elements[0].value,
            "ID" : clientID
        }
        ,function(gameParam){

            $("#waitingContainer").append("You have joined the game!<br\>Waiting for game creator to start game..");
            setInterval(checkIfGameAlreadyStarted(), 1000);    

        });
    });
}

为什么setInterval只执行一次checkIfGameAlreadyStarted,而不是每秒执行一次?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-13 05:00:26

您传递的是执行函数的结果,而不是函数本身。由于该函数的结果是未定义的,因此您将执行checkIfGameAlreadyStarted,然后将undefined传递给不做任何事情的setInterval。

而不是这样:

代码语言:javascript
复制
setInterval(checkIfGameAlreadyStarted(), 1000);

你的声明应该是这样的:

代码语言:javascript
复制
setInterval(checkIfGameAlreadyStarted, 1000);

在函数名的末尾不带括号。

当您传递checkIfGameAlreadyStarted()时,它会立即调用函数并获取它的返回值。当您传递checkIfGameAlreadyStarted时,它会传递一个对函数的引用,以便setInterval以后可以调用它(这正是您想要的)。

票数 82
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7746505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档