请问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 模型的工作原理
任务表示:每个任务用一个 Lane 表示,所有 Lane 组合成一个 Lane Set(一个 32 位的二进制数)。例如,任务 A、B、C 分别用 Lane 1、Lane 2、Lane 3 表示,那么一个包含任务 A 和 C 的 Lane Set 就是
000000000000000000000000000011。任务调度:通过位运算来管理任务的调度。例如,添加任务时使用
|运算,删除任务时使用& ~运算。优先级判断:可以通过简单的位运算判断一个任务是否在某个 Lane Set 中,从而决定是否需要处理该任务。
Lane 模型的优势
灵活性更高:Lane 模型可以更灵活地处理任务的优先级和调度,尤其是在处理 CPU 密集型任务和 IO 密集型任务时。
并发支持:Lane 模型更好地支持并发渲染,允许 React 在处理高优先级任务时,仍能中断并处理低优先级任务。
00
相似问题