Notes

ensureRootIsScheduled

一句话结论:ensureRootIsScheduled 是 React 调度的入口之一,它负责把“哪个 root 需要工作、以什么优先级工作”注册到 Scheduler,并避免重复调度。

1. 它要解决的问题

  • 同一时间可能有多个 root、多次更新触发
  • 需要把它们合并、排序,并只安排必要的回调(避免重复 schedule)

2. 典型流程(概念版)

  1. 把当前 root 加入“已调度 root 列表”
  2. 安排一次 microtask(或等价机制)去统一处理这些 root
  3. 在 microtask 中计算每个 root 的 nextLanes/优先级
  4. 调用 Scheduler:以对应优先级安排回调(callbackNode)

3. 常见追问

  • “为什么用 microtask”:把同一轮事件里的多次更新合并,减少重复工作
  • “如何避免饥饿”:Lane 有过期时间/提升机制(expired lanes)

关联阅读

cd ..