一文清晰搞懂requestAnimationFrame与requestIdCallback区别与执行时间顺序

  1. 浏览器的一帧(16.67ms,1000/60)都做了什么?
    它包含了,js的执行+浏览器渲染。具体可以参考历史文章。
    事件循环
    浏览器渲染原理

如下图,一帧的执行过程
在这里插入图片描述
补充:
2. react的时间切片
react将一个大渲染任务切成一个个小任务,每个小任务只负责一小部分dom更新,每小部分在浏览器空闲的时候去更新(requestIdCallback v16实现, requesetHostCallbcak (内部通过setTimeout来兼容)调用message channel 实现v18)

    • requestAnimationFrame: 在浏览器渲染之前执行,在事件循环的最后,类似setTimeout,但是不需要设置时间间隔,回调函数作为参数,回调函数会在浏览器绘制之前调用,返回一个整数表示定时器编号,可以传递给cancelAnimationFrame取消函数执行
    • requestIdCallback:浏览器有空闲时间的时候执行,在浏览器渲染结束以后判断是否有时间间隔执行。第二个参数timeout如果传了,并且有一个正值,而回调在 timeout 毫秒过后还没有被调用,那么回调任务将放入事件循环中排队执行~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值