采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
这一节非常乱,但是又非常重要,建议拆成几节,画下流程图,每节先讲解此节的整体设计在细入代码。这节的讲解直接开始分析每行代码确实难以理解是什么意思。
感谢你的建议,会根据情况考虑的,谢谢。
非常感谢!
这是我整理 调度这一js文件的流程图 希望能帮助你
(我自己画了后,再看两遍调度视频能很好理解了)
这一节的内容又稍微考证了一下,postMessage应该是macro-task队列中的任务,也就是在当前轮次animationTick函数中执行了postMessage,会等UI更新了后,在之后的事件循环轮次中执行,最好的情况就是接下来的那一轮就可以执行,最坏的情况就是因为始终被其它优先任务或者耗时任务占用时间导致idleTick设置didTimeout = true。其实也许用microtask的任务更好,这样下一轮会清空microtask队列,这样很快就可以执行。
本来调度的目的就是每一帧留足够的时间给浏览器渲染动画处理交互。你把react的任务放微任务队列里面。要清空掉岂不是要占很长时间了阻塞交互了
针对这一节,主要在各种time计算的时候有些乱,因为一上来不知道这些计算的目的和设计,因此反复慢速看了多遍。感谢你的回答,希望以后更加完美。
登录后可查看更多问答,登录/注册
掌握React源码,让你的开发水平没有上限,更不惧前端未来的到来
1.4k 8
1.1k 7
999 6
1.1k 6
968 6