所以,我有一些用于画布动画的JS代码:
function animate() {
requestAnimationFrame(animate);
c.clearRect(0, 0, canvas.width, canvas.height;
}
由于requestAnimationFrame位在代码的其余部分之前,这不应该是一个无限的空循环,它不会在函数内部运行任何代码吗?它显然不是,因为代码的其余部分可以工作,但我的问题是为什么?
答案 0 :(得分:2)
requestAnimationFrame
(rAF)不会立即调用您的函数。它安排它在浏览器绘制下一帧之前被调用(有点像setTimeout
调度在[大约]给定的毫秒数之后调用的函数)。所以这段代码正在做的是设置一个将为每个帧调用的处理程序。
因此假设在某个时刻调用animate
来启动该过程,它就像这样:
animate
被调用
animate