请问react18里是怎么根据lane是怎么计算expirationTime的呢?

来源:3-5 react-expiration-time

bupt_小慕侠

2024-03-05

如题

写回答

1回答

好帮手慕小李

2025-02-11

在 React 18 中,expirationTime 已经被废弃,取而代之的是 Lane 模型。Lane 模型通过一个 32 位的二进制数来表示多个任务的优先级,每个任务占用一个位,通过位运算来管理任务的优先级和调度。

Lane 模型与 expirationTime 的关系

虽然 React 18 中不再直接使用 expirationTime,但 Lane 模型与 expirationTime 之间存在一定的映射关系。具体来说,Lane 模型中的优先级会通过一定的逻辑转换为 Scheduler 的优先级,而 Scheduler 的优先级会进一步映射为类似 expirationTime 的逻辑。

Lane 模型的工作原理

  1. 任务表示:每个任务用一个 Lane 表示,所有 Lane 组合成一个 Lane Set(一个 32 位的二进制数)。例如,任务 A、B、C 分别用 Lane 1、Lane 2、Lane 3 表示,那么一个包含任务 A 和 C 的 Lane Set 就是 000000000000000000000000000011。

  2. 任务调度:通过位运算来管理任务的调度。例如,添加任务时使用 | 运算,删除任务时使用 & ~ 运算。

  3. 优先级判断:可以通过简单的位运算判断一个任务是否在某个 Lane Set 中,从而决定是否需要处理该任务。

Lane 模型的优势

  • 灵活性更高:Lane 模型可以更灵活地处理任务的优先级和调度,尤其是在处理 CPU 密集型任务和 IO 密集型任务时。

  • 并发支持:Lane 模型更好地支持并发渲染,允许 React 在处理高优先级任务时,仍能中断并处理低优先级任务。


0
0

React源码深度解析 高级前端工程师必备技能

掌握React源码,让你的开发水平没有上限,更不惧前端未来的到来

1749 学习 · 336 问题

查看课程