Javascript 为什么对requestAnimationFrame(render)的调用通常放在渲染函数的顶部,从而递归地调用自身?
我在很多例子中都看到了它,甚至经常在官方文档中以某种形式使用Javascript 为什么对requestAnimationFrame(render)的调用通常放在渲染函数的顶部,从而递归地调用自身?,javascript,rendering,Javascript,Rendering,我在很多例子中都看到了它,甚至经常在官方文档中以某种形式使用requestAnimationFrame。例如: var render = function () { requestAnimationFrame(render); cube.rotation.x += 0.1; cube.rotation.y += 0.1; renderer.render(scene, camera); }; 为什么requestAnimationFrame将放在函数体的顶部?在我看来,这可能会导
requestAnimationFrame
。例如:
var render = function () {
requestAnimationFrame(render);
cube.rotation.x += 0.1;
cube.rotation.y += 0.1;
renderer.render(scene, camera);
};
为什么requestAnimationFrame
将放在函数体的顶部?在我看来,这可能会导致调用堆栈或执行环境的拥塞,因为如果render
函数在其函数体的其余部分完成执行之前被requestAnimationFrame
调用,会发生什么情况,因为下一个动画帧可用??(所有后续呼叫都是一样的,会造成阻塞)
在我看来,直观地看,将requestAnimationFrame(render)放在下面似乎更明智代码>语句作为函数体的最后一个语句。因此,通过这种方式,函数的其余部分始终保证已完成执行,直到再次调用渲染函数为止
是否有一些我遗漏或误解的内部机制,将其放在首位实际上是推荐的方法,或者为什么经常看到它?请帮助我理解,谢谢。在显示当前帧之前将不会调用渲染
函数,而只有在返回当前对渲染
的调用后才会调用该函数
假设您当前正在计算第n帧。调用requestAnimationFrame
时,给定的回调将在第(n+1)帧的队列中排队。只有在显示当前帧后,才会处理下一帧
非常好地描述了帧生命周期及其与requestAnimationFrame
的关系