0

这是我正在使用的代码。当 ticks 等于 5 时,递归函数应该停止清除 mainThread 超时。任何人请帮忙。

var mainThread;  
var ticks = 0;  
function tickTimer() {  
    clearTimeout(mainThread);  
    if (ticks >= 5) {  
        endGame();  
    }  
    else {  
        mainThread = setTimeout(function () {  
            ticks++;  
            tickTimer();  
        }, 1000);  
    }  
}  

让我知道是否有任何疑虑。先感谢您。

4

6 回答 6

4

试试这个:

function tickTimer() {       
    if (++ticks >= 5)  {
        clearInterval (mainThread); 
        endGame();  
    }  
} 

var  mainThread = setInterval(tickTimer, 1000);
var ticks = 0;
于 2014-02-12T08:58:04.440 回答
1

你申报了mainThread吗?像这样

var mainThread = null;
function tickTimer() {  
    clearTimeout(mainThread);
    mainThread = null;  
    if (ticks >= 5) {  
        endGame();  
    }  
    else {  
        mainThread = setTimeout(function () {  
            ticks++;  
            tickTimer();  
        }, 1000);  
    }  
}

ticks++不是ticks--

于 2014-02-12T08:56:56.323 回答
1
you can try this. all you need to do is clear interval every time tickTimer function is called.

var  mainThread = setInterval(tickTimer, 1000);
var ticks = 0;

function tickTimer() {       
    if (++ticks >= 5)  {
        clearInterval (mainThread); 
        endGame();  
    }  
} 
于 2014-02-12T09:19:48.730 回答
1

请尝试更换ticks--ticks++

于 2014-02-12T09:01:20.530 回答
0

我认为只是将您的计时器作为参数发送

function tickTimer(timer) {  
    timer && clearTimeout(timer);  
    if (ticks >= 5) {  
        endGame();  
    }  
    else {  
        var timer = setTimeout(function () {  
            ticks--;  
            tickTimer(timer);  
        }, 1000);  
    }  
}  

不要使用全局范围)))

于 2014-02-12T08:58:18.047 回答
0

我认为您应该在触发函数时初始化变量刻度。

于 2014-02-12T08:59:05.377 回答