我理解 setTimeout 和 setInterval 之间的区别,如 this解释得很好。
这个问题是关于使用定时器时的最佳实践,特别是 setTimeout 与 setInterval。
如果我需要在游戏中相当频繁地多次调用倒计时(例如,玩家移动到新位置,这会触发新的倒计时,这将鼓励他们在 5 秒 ),但它不一定是统一的间隔(意思是,它们应该移动到下一个位置,但可以在当前位置闲逛并受到惩罚),它在性能方面是否更好,并且在代码方面是否更清晰:
a) 当玩家决定改变位置时继续清除和设置setTimeout()
if (player.newLocation !== player.oldLocation) { //player location has changed
window.clearTimeout(myTimer);
myTimer = setTimeout(function() {
do something
},50);
}
b) 保持 setInterval 运行,但每次玩家移动到新位置时更改一个充当倒计时的变量
var counter = 0;
if (player.newLocation !== player.oldLocation) {
counter = 100;
}
myTimer = setInterval(function() {
if (counter > 0) {
// do something...
counter--;
}
},50);
最佳答案
is it better performance-wise
在不需要时不保留计时器肯定更好。无论它们是通过 setTimeout
还是 setInterval
实现的。
and clean code-wise
这取决于“玩家决定更改位置”的方式(通常),以及如何向您的代码发送信号。它可能会在行为上产生实际差异,您应该致力于保持代码正确 - 独立于输入的顺序和时间。保持简单,并选择您需要的内容。
关于javascript - setTimeout 与 setInterval - 使用的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26916368/