请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于addRootToSchedule的expirationTime

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一样的。
这个过程也没有异步的可能。
这里的意义不明,视频里也没说明,这里求教,望解答。

正在回答 回答被采纳积分+3

插入代码

1回答

Jokcy 2019-12-29 17:31:04

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

0 回复 有任何疑惑可以回复我~
  • 提问者 calimanco #1
    是的,我用“addRootToSchedule”关键字搜索了整个源码项目确实只看到这一处调用,就是requestWork。
    回复 有任何疑惑可以回复我~ 2019-12-29 17:42:46
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号