【发布时间】:2019-12-17 04:11:54
【问题描述】:
我目前正在尝试编写类似于电子宠物“护理错误”的代码。
在这种情况下,我正在尝试创建一个函数来检查对象的饥饿状态是否高于或等于 10。一旦发生这种情况,计时器将启动,如果 10 秒后仍保持在 10 以上,它将被记录为“错误”。
但是,如果用户执行了另一个将饥饿值降低到 10 以下的操作,它将清除计时器。
尽管尝试了下面的代码,但我目前无法正确清除计时器。
var changeHungerMood = setInterval(mistakeCheck, 5000);
function mistakeCheck() {
var mistakeTimer
function addMistake() {
stats.mistakes += 1;
}
if (stats.hunger >= 10) {
var mistakeTimer = setTimeout(addMistake, 10000);
} else {
clearTimeout(mistakeTimer);
console.log("Mistake Cleared!");
}
}
minmaxHunger("hunger", 10, 0);
目前,即使在检查后饥饿值低于 10,计时器也不会被清除,它仍然会被记录为错误。有人可以帮忙吗?谢谢。
【问题讨论】:
-
每次调用errorCheck 时,您都在重新定义errorTimer。我相信这就是你的问题所在。因此,当您运行 clearTimeout(mistakeTimer) 时,它与启动倒计时的 Timer 不同。
标签: javascript function timeout