ReactFiberScheduler 和 Scheduler 的关系
来源:4-9 performWork
Dalei666
2019-05-29
老师好,我在学习 Scheduler 调度任务的时候有个关于 ReactFiberScheduler 和 Scheduler 之间关系的问题:
我现在对这个更新流程的理解是:
- 每个更新到来后,生成一个 Update 对象,放到 ReactRoot 的 updateQueue 里。
- 中间一系列计算过期时间后更新 ReactRoot 的过期时间并将它添加到 ReactFiberScheduler 的 ScheduledRoot 链表里。
- 判断这次更新是批量/批量,同步/异步,如果是异步任务,就执行 scheduleCallbackWithExpirationTime(root, expirationTime);进而执行 callbackID = scheduleDeferredCallback(performAsyncWork, {timeout});
- scheduleDeferredCallback 在 Scheduler 里,会对应生成一个 callbackNode,并对这个 callbackNode 安排更新。
目前我对调度的流程是这样认为的,但是 ReactRoot 是惟一的,所以它上面可以包含很多 update 对象,而在执行 scheduleDeferredCallback(performAsyncWork, {timeout}); 的时候,并没有区别是哪个节点的更新,这中间通过什么联系起来?
是不是说 ReactFiberScheduler 只管理需要更新的 Root,Scheduler 管理需要的任务,各做各的,各有各的顺序,但都是对应的,Scheduler 执行了一个任务后 ReactFiberScheduler 去更新的任务总是最高优先级的?
写回答
1回答
-
是的,Scheduler只是管理调度的,他管的是跟浏览器渲染去要时间,要到时间之后就回来执行React的更新了,至于这个时候你哪个更新任务优先级高,那不是他的事情。
012019-05-31
相似问题