javascript - setTimeout 与 setInterval - 使用的最佳实践

标签 javascript jquery timer

我理解 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/

相关文章:

javascript - 找到距离原点 (0, 0) 最近的 K 个点

javascript - 在 AngularJS 中使用 DocRaptor 生成 PDF

timer - CUDA:cudaEvent_t和cudaThreadSynchronize用法

java - ScheduledExecutorService 一线程多任务

javascript - 函数中惯用的 jQuery 和选择器路径

javascript - 如何通过 TypeScript 在 Next.js 中使用 Peer.js?

javascript - 为什么我的 Scroll 事件在这里被调用两次?

javascript - 在不重置插入符号(光标)位置的情况下修改内容可编辑的 div 中的文本

javascript - 使用 javascript href 链接附加一次

javascript - 在倒计时器javascript中显示小时