react cocurrent mod 知多少

31 阅读1分钟

定义

  1. 可中断的,基于优先级的渲染模式

为什么

  1. 因js 本身是单线程语言,避免阻塞主线程,依赖于时间分片算法,实现
  2. 补: 也为了能主动控制高优先级任务。

核心问题

时间分片算法 优先级队列算法 补: 双缓冲技术 ?

怎么处理

  1. 默认开启
  2. useTransition

核心原理

  • Q VDOM--》Fiber 链表
  • A vdom 本身不具备任何相邻节点信息,所以先转成fiber
  • Q 并发 or 并行
  • A 并发是一段时间内,多任务一块执行,并行是同一时刻,同时执行
  • Q react 并发指的具体什么意思,任务交替执行
  • Q fiber 节点执行的过程中,中断后,怎么恢复
  • A 将被打断的任务,放入schedule 调度队列里面,再次取出执行
  • Q 那fiber中断条件是什么
  • A 有且仅有一个就是时间分片,优先级,影响的是调度队列里的,可以把高优先级预先在队列里,每个时间片就会优先去处理高优先级任务
  • Q 优先级机制是什么怎么做的
  • A 通过lane模型设计了31种用二进制数值表示的优先级,性能更好
  • Q react怎么去判断是否要进行时间分片
  • A 依据lan模型,如果某次setState 内部给任务标记对应开启时间分片的lan 那就是开启了并发
  • Q 具体并发API 有哪些 useTransition ,useDeferredValue等
  • A 可以把低优先级任务进行包裹