我目前正在尝试编写类似于tamagotchi"护理错误"的代码。
在这种情况下,我正在尝试创建一个函数来检查对象的饥饿统计数据是高于还是在 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,计时器也不会清除,它仍然被记录为错误。有人可以帮忙吗?谢谢。
您应该澄清在每种情况下需要完成的操作。 非常迫切地,您需要:
- 设置你的计时器,如果
stats.hunger >= 10
,你做得很好(除了你声明mistakeTimer
两次var
......跳过第二个var
(。 - 当 10 秒结束时,您需要检查
stats.hunger
是否仍然10
或更多,而不是调用addMistake
,如果是这种情况,请调用您的addMistake
函数。
因此,您需要添加一个函数addMistakeIfNeeded
,用于执行检查并在需要时调用addMistake
。您的计时器应该调用此addMistakeIfNeeded
函数而不是addMistake
。
@Jonas是对的,您需要将addMistake
和addMistakeIfNeeded
排除在mistakeCheck
功能之外。