Skip to content

React 理念

CPU 瓶颈

原因:

JS 可以操作 DOM,GUI渲染线程JS线程是互斥的,所以 JS 脚本执行和浏览器布局、绘制不能同时执行。 当 JS 执行时间太长,就会导致页面卡顿

如何解决:

在浏览器每一帧的时间中,预留一些时间给 JS 线程, 利用这些时间更新组件。当一帧中的任务无法完成,就会中断更新,放在下一帧执行。

所以,解决该问题的关键是,实现时间切片, 将同步的更新变为可中断的异步更新

IO 瓶颈

React 将人机交互研究的结果整合到真实的 UI 中。

例如当我们访问 github 某个页面,页面并没有直接跳转,而是留在当前页面,等待数据加载完成。

为此,React 实现了Suspense (opens new window)功能及配套的 hook——useDeferredValue (opens new window)。

而在源码内部,为了支持这些特性,同样需要将同步的更新变为可中断的异步更新