背景
我不太明白如何正确地问这个问题,但这是我最好的办法。
有没有办法让Javascript有能力控制自己的速度?它基本上是动态地选择它的帧速率。它永远不会触发超出浏览器处理能力的事件,理想情况下应该少一点。动画将在当前时间计算,并基于该当前时间动态递增。
问题
发布于 2018-09-27 06:55:50
有没有办法让Javascript有能力控制自己的速度?
不是的。Javascript将尽可能快地运行,当浏览器想要运行它时,所以你不能改变“它运行的速度”的方式。如果JS代码被执行,浏览器将被阻止,这意味着:
while(true) {
document.body.textContent = new Date();
}
将使浏览器崩溃,而不是显示当前时间。
它基本上是动态地选择它的帧速率。
那是另一回事。浏览器会绘制你递给他的任何东西(例如画布),并以大约60fps的速度重新渲染。例如:
setInterval(function update() {
document.body.textContent = new Date();
}, 100);
它永远不会超出浏览器的处理能力,理想情况下应该少一点。动画将在当前时间计算,并基于该当前时间动态递增。
这就是requestAnimationFrame
的用武之地。
(function update() {
document.body.textContent = new Date();
requestAnimationFrame(update);
})();
这样,下一次更新只会在当前完成之后发生,浏览器只会在更新函数ender之后重新渲染,所以如果你的函数花了很长时间来计算更新,它将会延迟/冻结。
https://stackoverflow.com/questions/52526869
复制相似问题