不应该';难道这段JavaScript代码不起作用吗?

不应该';难道这段JavaScript代码不起作用吗?,javascript,html,canvas,html5-canvas,Javascript,Html,Canvas,Html5 Canvas,因此,我有一段画布动画的JS代码: function animate() { requestAnimationFrame(animate); c.clearRect(0, 0, canvas.width, canvas.height; } 由于requestAnimationFrame位位于代码的其余部分之前,这难道不应该是一个不在函数内部运行任何代码的无限空循环吗?显然不是这样,因为其余的代码都在工作,但我的问题是为什么?requestAnimationFrame(rAF)不会立即调用您的函

因此,我有一段画布动画的JS代码:

function animate() {
requestAnimationFrame(animate);
c.clearRect(0, 0, canvas.width, canvas.height;
}

由于requestAnimationFrame位位于代码的其余部分之前,这难道不应该是一个不在函数内部运行任何代码的无限空循环吗?显然不是这样,因为其余的代码都在工作,但我的问题是为什么?

requestAnimationFrame
(rAF)不会立即调用您的函数。它计划在浏览器绘制下一帧之前调用它(有点像
setTimeout
计划在给定的毫秒数之后调用函数)。因此,这段代码所做的是设置一个处理程序,该处理程序将为每个帧调用

因此,假设某个东西在某个点调用
animate
,以启动该过程,它如下所示:

  • 调用
    动画
    • 它调用rAF在下一帧之前安排呼叫
    • 它清除矩形
  • 浏览器到达要渲染帧的点
    • 浏览器调用
      动画
      • 见#1