JavaScript类似单线程。为了避免长进程长期占用资源,react提出了react-fiber。用来调度进程。
fiber:又称 协程,其是一种控制流程的让出机制。核心思想是react的渲染过程可以被中断,将控制权交回浏览器,让位给更高级的任务。
在React Fiber中,一次更新过程会分成多个分片完成,所以完全有可能一个更新任务还没有完成,就被另一个更高优先级的更新过程打断,这时候,优先级高的更新任务会优先处理完,而低优先级更新任务所做的工作则会完全作废,然后等待机会重头再来。
因为一个更新过程可能被打断,所以React Fiber一个更新过程被分为两个阶段(Phase):第一个阶段Reconciliation Phase和第二阶段Commit Phase。
第一阶段Reconciliation Phase,React Fiber会找出需要更新哪些DOM,这个阶段是可以被打断的;
第二阶段Commit Phase,那就一鼓作气把DOM更新完,绝不会被打断。