clearTimeout在递归函数中不工作-javascript
这是我正在使用的代码。当ticks变为5时,递归函数应停止清除主线程超时。任何人都可以帮忙clearTimeout在递归函数中不工作-javascript,javascript,settimeout,cleartimeout,Javascript,Settimeout,Cleartimeout,这是我正在使用的代码。当ticks变为5时,递归函数应停止清除主线程超时。任何人都可以帮忙 var mainThread; var ticks = 0; function tickTimer() { clearTimeout(mainThread); if (ticks >= 5) { endGame(); } else { mainThread = setTimeout(function ()
var mainThread;
var ticks = 0;
function tickTimer() {
clearTimeout(mainThread);
if (ticks >= 5) {
endGame();
}
else {
mainThread = setTimeout(function () {
ticks++;
tickTimer();
}, 1000);
}
}
如果有任何问题,请告诉我。
提前谢谢。您是否声明了主线程?像这样
var mainThread = null;
function tickTimer() {
clearTimeout(mainThread);
mainThread = null;
if (ticks >= 5) {
endGame();
}
else {
mainThread = setTimeout(function () {
ticks++;
tickTimer();
}, 1000);
}
}
而滴答声++不是滴答声-请尝试以下方法:
function tickTimer() {
if (++ticks >= 5) {
clearInterval (mainThread);
endGame();
}
}
var mainThread = setInterval(tickTimer, 1000);
var ticks = 0;
我想只要把你的计时器作为论据就行了
function tickTimer(timer) {
timer && clearTimeout(timer);
if (ticks >= 5) {
endGame();
}
else {
var timer = setTimeout(function () {
ticks--;
tickTimer(timer);
}, 1000);
}
}
不要使用全局作用域,你应该在函数被触发时初始化变量ticks。请尝试替换ticks-to ticks++你正在减少ticks的值,但如果值变大或等于5,游戏就结束了。正如@UweB提到的,if条件不应该是if ticks==5{endGame;}因为Tiks>=5总是返回true?考虑使用,而不是重复调用StimeTimeUT。太棒了!谢尔。成功了。顺便说一句,Loxy给出了相同类型的答案。“并且正在发挥作用。”sheelpriy将你的洞察力添加到某人的答案中是非常棒的。但如果有的话,一定要努力给予表扬。
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();
}
}