关于addRootToSchedule的expirationTime

来源:4-3 requestWork

calimanco

2019-12-29

addRootToSchedule函数里有关加入调度队列的方法里都会:

root.expirationTime = expirationTime;

以及更新优先级的方法:

const remainingExpirationTime = root.expirationTime;
    if (
      remainingExpirationTime === NoWork ||
      expirationTime < remainingExpirationTime
    ) {
      // Update the priority.
      root.expirationTime = expirationTime;
    }

这里感觉很多余,因为传入addRootToSchedule的expirationTime从requestWork那里透传过来,而requestWork的expirationTime来自scheduleWork。
在scheduleWork的调用里有一段:

const rootExpirationTime = root.expirationTime;
requestWork(root, rootExpirationTime);

明显本身expirationTime就已经是当前FiberRoot上的expirationTime;remainingExpirationTime理论上就是跟expirationTime一样的。
这个过程也没有异步的可能。
这里的意义不明,视频里也没说明,这里求教,望解答。

写回答

1回答

Jokcy

2019-12-29

addRootToSchedule是只有一个地方调用么?

0
1
calimanco
是的,我用“addRootToSchedule”关键字搜索了整个源码项目确实只看到这一处调用,就是requestWork。
2019-12-29
共1条回复

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

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

1749 学习 · 336 问题

查看课程