Javascript setInterval的性能随着多个动画而下降

| 我正在使用
setInterval(foo,ms)
进行动画制作。我真的不想在这里发布动画的所有代码,因为它跨越了多个文件。基本上是一堆图像下降。在更新坐标以模拟重力时,我每秒钟调用一次ctx.drawImage(img,...)。 我已将画布分为两部分,左边是一个动画,右边是一个动画。当其中之一被激活时,帧速率稳定在30 fps。但是,如果我同时激活它们两者,则性能会下降。这与计算机超载无关,因为我可以将每个动画的复杂度降低10倍,并且问题仍然存在。我的猜测是setIntervals互相干扰。 我的问题是执行多个setInterval调用是否安全?谢谢     
已邀请:
           我的问题是执行多个setInterval调用是否安全? 简短的回答:是的,绝对。     
        您可以有许多
setIntervals()
,但请注意,JS本质上是单线程的(每页)。实际上,通过跳过一个有关代码的线程来处理多个“并发”线程。 这意味着计时不会保持一致-尤其是其中一种方法需要花费相当长的时间才能运行时。     
        正如其他人所说,您可以拥有尽可能多的东西。但是,为了获得良好的性能,您应该拥有尽可能少的数量。也许您可以找到一种对两个动画仅使用一个时间间隔的方法。 但是,如果使用全局变量,可能会出现问题。这可能会对动画产生影响(甚至可能影响性能,取决于您使用它们的目的)。     
        我建议使用setTimeout可以避免性能问题。 看看这个问题setTimeout或setInterval? 它很好地解释了两者之间的区别以及为什么通常应该使用setTimeout。     
        是的,可以安全地运行多个setIntervals。使用setIntervals没有潜在的性能问题。分析您自己的代码,几乎可以肯定在那里找到了问题。     

要回复问题请先登录注册