JS setInterval只执行一次

我有以下JS函数:

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!
Waiting for game creator to start game.."); setInterval(checkIfGameAlreadyStarted(), 1000); }); }); }

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

您正在传递执行函数的结果而不是函数本身。 由于函数的结果是未定义的,因此您正在执行checkIfGameAlreadyStarted,然后将undefined传递给setInterval,后者不执行任何操作。

而不是这个:

 setInterval(checkIfGameAlreadyStarted(), 1000); 

你的陈述应该是这样的:

 setInterval(checkIfGameAlreadyStarted, 1000); 

函数名末尾没有括号。

当你传递checkIfGameAlreadyStarted()立即调用该函数并获得它的返回值。 当你传递checkIfGameAlreadyStarted并传递对函数的引用时,setInterval可以稍后调用它(这就是你想要的)。