javascript - setTimeout() 方法不会执行

标签 javascript

我已经编写了一个脚本,但我想限制某些函数的执行时间。我决定尝试 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

最佳答案

代码应如下所示:

setTimeout(rollDice, 6000);

通过添加括号,您可以调用该函数并设置一个计时器来调用该函数返回的任何内容。您需要传递函数对象本身。

设置超时后,您无法立即使用 diceOnediceTwo。您还必须将该代码放入超时函数中,例如:

setTimeout(function() {
    rollDice();

    if (diceOne != 1 && diceTwo != 1){
        currentScore += diceOne + diceTwo;
    ...
}, 6000);

这是因为 setTimeout 之后的代码不会在超时结束之前等待。

关于javascript - setTimeout() 方法不会执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26207183/

相关文章:

javascript - Javascript查找没有ID、标签名称的标签值

php - 如何使用javascript更改隐藏类型输入字段的值

javascript - 如果 struts/自定义标签位于 javascript 方法内,它们何时得到解析

javascript - ruby on Rails中,如何在客户端正确显示时间?

javascript - 使用 CSS webkitFilter 绘制 toDataURL

javascript - 如何使用固定文本创建图像幻灯片?

javascript - 如何在Controller中捕获Subview事件?

javascript - 在 Bootstrap 中禁用输入。如何将其应用于不同的 TAG?

javascript - 在 Firebase 中断期间,有一种方法可以通过运行本地代码来模拟这种情况

javascript - 将二进制字符串写入图像文件