【发布时间】:2019-02-16 09:08:41
【问题描述】:
好的,在您将此标记为重复之前,请阅读全文。
所以,我是 JS 新手。我正在尝试做一个计时器。每当调用函数timerReset() 时,都应该重新启动一个间隔。我有这个:
intervalID = setInterval(wallsPingTimer, wallsTime); //INTERVAL IS DEFINED ON STARTUP
wallsTime = 10000;
wallsToggle = true
function timerReset() {
if (wallsToggle === true) {
console.log('Timer has been reset');
clearInterval(intervalID);
intervalID = setInterval(wallsTimerPing, wallsTime);
}
if (wallsToggle === false) {
console.log('Timer is disabled');
}
}
function wallsPingTimer() {
//some code
}
计时器在启动intervalID = setInterval(wallsTimerPing, wallsTime) 时启动,但旧计时器从不停止。最终发生的是wallsTimerPing() 一遍又一遍地在多个计时器上执行。 clearInterval(intervalID) 从来没有真正停止过原版,我很困惑。
我查看了很多其他类似的问题,似乎我做对了(显然不是)。怎么回事?
【问题讨论】:
-
setInterval()将函数引用作为其第一个参数。wallsTimerPing是什么?请更新您的问题以显示所有相关代码。 -
显示的代码看起来正确。您如何使用
timerReset以及您如何得出未重置间隔? -
clearInterval 后面是代码中的 setInterval,因此 wallTimerPing 函数永远不会停止执行
-
@ScottMarcus 更新,wallTimerPing 是一个函数。 @charlietfl
timerReset由其他函数执行。这是 discord.js 中的一个机器人,所以当使用某个命令时它会被执行。 @Stakvino 计时器应该重新启动,这是故意的。那部分有效,旧的间隔一直在运行...... -
你定义了使用后的墙壁时间?
标签: javascript node.js discord.js