clearTimeout不能用于递归函数--javascript

时间:2014-02-12 08:54:53

标签: javascript settimeout cleartimeout

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

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

如果有任何疑虑,请告诉我。 提前谢谢。

6 个答案:

答案 0 :(得分:3)

请改为尝试:

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

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

答案 1 :(得分:1)

你宣布mainThread了吗?喜欢这个

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

ticks++不是ticks--

答案 2 :(得分:1)

请尝试将ticks--替换为ticks++

答案 3 :(得分: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();  
    }  
} 

答案 4 :(得分:0)

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

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

不要使用全局范围)))

答案 5 :(得分:0)

我认为你应该在触发函数时初始化变量滴答。