在更新循环中使用setTimeout vs比较时间戳

using setTimeout vs comparing timestamp on an update loop

本文关键字:setTimeout vs 比较 时间戳 更新 循环      更新时间:2023-09-26

使用Javascript,在一个应用程序中,使用一个更新函数,运行每个渲染帧,并寻求每一个微小的优化:

如果一个人想要经常运行代码,而时间的精度几乎不重要,那么在使用setTimeout循环或仅仅在应用程序的更新函数中构建计时器之间是否有一个明智的选择?

例如,setTimeout是否有一些意想不到的计算成本,使其明显变慢?或者,在另一方面,setTimeout会积极影响应用程序,因为Javascript不急于使setTimeout回调发生?

使用时间戳差异比setTimeout更好,但仍然需要有呈现循环。因此,您可以使用requestAnimationFrame作为回调函数参数发送的时间戳差异。

我希望这能回答你的问题。

还请记住(正如您提到的),setTimeout被推迟到堆栈调用的末尾。这就是为什么在node.js中你有其他的方法来"延迟"函数,而且你也有一个更快的方法来计算时间戳的差异,通过使用process.hrtime而不是使用Date对象。

长话短说就是:

使用requestAnimationFrame发送给回调的参数