gpt4 book ai didi

javascript - 单击按钮后清除超时

转载 作者:行者123 更新时间:2023-11-28 03:39:18 26 4
gpt4 key购买 nike

我目前正在尝试编写类似于电子宠物“护理错误”的代码。

在本例中,我尝试创建一个函数来检查对象的饥饿统计数据是否高于或等于 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,计时器也不会被清除,并且仍然会被记录为错误。有人可以帮忙吗?谢谢。

最佳答案

您应该明确每种情况下您需要完成的任务。非常重要的是,您需要:

  1. 要在 stats.hunger >= 10 时设置计时器,您做得很好(除了您使用 var 声明 mistakeTimer两次...跳过第二个 var)。
  2. 当 10 秒结束时,您需要检查 stats.hunger 是否仍为 10 或更大,而不是调用 addMistake,如果是这种情况,请调用您的 addMistake 函数。

因此,您需要添加一个函数 addMistakeIfNeeded 来执行检查并在需要时调用 addMistake。并且您的计时器应该调用此 addMistakeIfNeeded 函数,而不是 addMistake

@Jonas 是对的,您需要将 addMistakeaddMistakeIfNeeded 放在 mistakeCheck 函数之外。

关于javascript - 单击按钮后清除超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57429707/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com