React 中的 Scheduler
1. 时间切片
时间切片本质在模拟 requestIdleCallback
一个 task(宏任务) -- 队列中全部job(微任务) -- requestAnimationFrame -- 浏览器重排/重绘 -- requestIdleCallback
Scheduler 的时间切片功能是通过 task(宏任务)实现的。
最常见的 task 当属 setTimeout 了。但是有个 task 比 setTimeout 执行时机更靠前,那就是 MessageChannel,所以 Scheduler 将需要被执行的回调函数作为 MessageChannel 的回调执行。如果当前宿主环境不支持 MessageChannel,则使用 setTimeout。
2. 优先级调度
React 的任务具有优先级,优先级高的需要优先执行,优先级意味着任务的过期时间,如果任务已经过期,则需要立即执行
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
更多
发布评论