You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

requestAnimationFrame回调执行时机:在reflow还是repaint之前?

关于window.requestAnimationFrame()回调执行时机的疑问解答

你的测试结论是正确的:window.requestAnimationFrame()(简称rAF)的回调确实是在重排(reflow/Layout)之前执行的,MDN的表述属于简化性描述,存在模糊空间。

浏览器的单帧渲染流程大致如下:

  • 处理用户交互输入
  • 执行所有rAF回调
  • 样式计算(Recalculate Style)
  • 布局(重排/Reflow)
  • 绘制(重绘/Repaint)
  • 图层合成(Composite)

从这个流程就能看出,rAF回调的执行时机早于重排和重绘。你提到的逻辑完全合理:如果回调在重绘前才执行,此时修改布局属性会触发额外的重排,导致当前帧来不及处理,只能推迟到下一帧,凭空增加16ms左右的延迟——这显然违背了rAF专为动画优化设计的初衷。

MDN之所以表述为“repaint前调用”,应该是把整个渲染流程做了简化,因为重绘确实是渲染流程的最后几步之一,站在“最终渲染前”的角度来说不算错误,但没有明确区分重排和重绘的顺序,容易让开发者产生误解。

内容的提问来源于stack exchange,提问作者euijin-kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 04:05:40