我编写了一个脚本,但我希望限制某些功能的执行时间。我决定尝试使用setTimeout()方法,但是当我执行程序时没有超时,即setTimeout()不起作用。
setTimeout(rollDice(),6000)是即时执行的行
这是我的代码:
function rollDice() {
diceOne = Math.round(5 * Math.random() + 1);
diceTwo = Math.round(5 * Math.random() + 1);
}
function mainFunction() {
playerAI.playing = true;
playerOne.playing = true;
currentScore = 0;
playerAI.totalScore = 0;
playerOne.totalScore = 0;
while (playerAI.playing == true && playerOne.playing == true) {
makeMove();
}
}
function makeMove() {
if (who == 0) {
aiStrat();
game();
}
else {
var confirmAction = confirm("Kas soovite visata täringuid?");
if (confirmAction) {
decision = 1;
}
else {
decision = -1;
}
game();
}
}
function game() {
if (decision == 1) {
setTimeout(rollDice(), 6000); // <--- THIS GETS EXECUTED INSTANTLY
if (diceOne != 1 && diceTwo != 1){
currentScore += diceOne + diceTwo;
//and so on
答案 0 :(得分:4)
代码应如下所示:
setTimeout(rollDice, 6000);
通过添加括号,您将调用该函数并设置一个计时器来调用该函数返回的任何内容。你想要传递函数对象。
设置超时后,您无法立即使用diceOne
和diceTwo
。您还必须将该代码放在超时函数中,例如:
setTimeout(function() {
rollDice();
if (diceOne != 1 && diceTwo != 1){
currentScore += diceOne + diceTwo;
...
}, 6000);
那是因为setTimeout
之后的代码不会在超时结束前等待。
答案 1 :(得分:0)
试试这个:
setTimeout(function(){
rollDice()
}, 6000)
答案 2 :(得分:0)
调用rollDice函数时不需要括号。
setTimeout(rollDice, 6000);
答案 3 :(得分:0)
我会用这样的东西:
setTimeout(function(){rollDice()},6000);