requestAnimationFrame 仅在重绘之前或每帧运行吗?

问题描述 投票:0回答:1

根据大多数文章的说法,requestAnimationFrame 在浏览器重新绘制之前运行,并适合屏幕刷新率。然而我的理解是,浏览器仅在某些代码更改屏幕上的内容时才会重新绘制,并且如果没有发生任何情况,则不应调用 requestAnimationFrame 。我尝试了这段代码,它表明无论视图是否更改,requestAnimationFrame都会被调用。我哪部分理解错了?

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <div id="some">aaa</div>
  </body>
  <script>
    function step(timeStamp) {
      console.log("aaa"); // gets printed every frame
      window.requestAnimationFrame(step);
    }
    window.requestAnimationFrame(step);
  </script>
</html>
javascript html web browser frontend
1个回答
0
投票

您唯一错误的是,浏览器仅在发生变化时重新绘制。您阅读的文章所解释的是正确的:

requestAnimationFrame
与用户显示器的刷新率匹配,这意味着它通常每秒运行 60 次。

查看MDN 的文章了解完整详细信息。

© www.soinside.com 2019 - 2024. All rights reserved.