详细聊聊 React 的调度机制
结论:React 调度把“什么时候跑”交给 Scheduler(任务队列+时间片),把“跑什么”交给 Fiber/Lane(更新集合+优先级);两者协作实现批处理、插队与可中断渲染。
1. Scheduler 负责什么
- 用 taskQueue/timerQueue 管理任务优先级与到期时间
- 执行一段后
shouldYield()让出主线程,避免长任务
2. React 负责什么
- 用 lanes 表达更新优先级与集合(pending/suspended/expired)
- workLoop 把更新渲染成 workInProgress 树,并在合适时机 commit
3. 面试回答建议
- 先说目标:交互优先、可预测性能、避免掉帧
- 再说手段:批处理 + 优先级 + 时间切片 + commit 原子性