React 时间分片、插队机制、延迟任务特性刚出来的时候,非常兴奋,总是想一探究竟, 奈何被业务拉住了脚步 👣。在平常封装业务组件以及公用组件的时候,很少用到里面的技巧,所以对于这些特性,也是非常想探究的,最近,闲下心来,认真学习技术,本文也是对三大特性进行模拟。
认真学习技术
- 时间分片 ✅
- 多任务调度 ✅
- 插队机制 ✅
- 延迟任务 ✅
- Fiber 为什么需要时间分片?
- 时间分片应选择微任务还是宏任务?
- 为什么不选择 setTimeout(fn, 0)?
- 为什么不选择 requestAnimationFrame(fn)?
- setTimeout(fn, 0)和 requestAnimationFrame(fn)回调谁先执行?
- Scheduler 调度方式和生成器函数(Generator Function)调度方式差不多,为什么不使用生成器函数(Generator Function)调度方式?参考
掘金相信大家如果对事件循环了解,以上问题迎刃而解,
问题 3: 为什么不选择 setTimeout(fn, 0)?: 1、 除了递归浪费 4 毫秒。 2、由于渲染时机原因,宏任务可能合并,造成调和某个 Fiber 节点忽略,不稳定,难以把握。参考
问题 5: setTimeout(fn, 0)和 requestAnimationFrame(fn)回调谁先执行? 1、不管谁在前还是后,还是在一起执行。由于渲染时机原因存在,需要看当前渲染时机是否存在渲染更新。在看回调执行时机。