我有一个在单击事件上运行的函数,该函数对我的一些动画(我正在玩游戏)使用 javascript 的 setIterval,所以问题是如果用户在动画仍在显示时单击(setInterval 仍在执行)setInterval堆积在事件堆栈中,或者这就是我发现的结果,因此要么破坏我的游戏,要么以两倍的速度运行(动画)。我的问题是有什么方法可以防止事件堆叠?我不希望 setInterval 叠加在前面的 setInterval 上,依此类推。我知道我可以像这样使用 clearInterval 函数:
var timerInterval = setInterval(drawPlayerRunning, 50);
clearInterval(timerInterval);
但它并没有真正像我想要的那样工作,因为如果用户在函数仍在执行时多次单击怎么办,clearInterval 只会摆脱事件堆栈的最后一个事件,而所有以前的事件仍然在“游戏”。知道如何防止此事件堆积,或者至少有效地删除它们吗?