fiber粗浅记录

216 阅读1分钟

fiber在数据结构和调度算法上实现了优化:

1:

数据结构上,采用了链表的形式存储各个fiberNode节点;一些属性,如: alternate,parentNode,child等。

2:

调度算法上,改进了之前直接渲染完毕的算法。时间调度:利用在浏览器idle时去渲染,但是这个并没有直接利用浏览器requestIdleCallback去处理所有任务。(可能是由于兼容问题)自己利用requestAnimationFrame及setTimeout模拟,来获取浏览器当前帧的空闲时间。(requestAnimationFrameWithTimeout)。 每次渲染一个fiberNode就要检查是否有高优先级任务(findHighestPriorityRoot),如果有,就暂停更新,执行高优先级任务。如果没有,就继续更新。