react17
React基于浏览器的事件机制自身实现了一套事件机制,包括事件注册、事件的合成、事件冒泡、事件派发等,在React中这套事件机制被称之为合成事件
react15的架构是递归,一个长任务会阻塞后续用户交互、卡顿,改成fiber架构,异步任务 放在 requestAnimationFrame 超时时间 + messageChannel 模拟requestIdleCallback
在一个宏任务里面执行,保证了用户不会失去响应(心电图的原因)
Scheduler模块 16就有 对所有更新都做了一个优先级的绑定,来调度任务的优先级 可以中断低优先级任务,先执行高优先级任务
1.放在宏任务中执行,不会一直占用主线程,有机会响应用户
2.每个更新都有优先级的绑定, 并且可以中断低优先级,执行高优先级的更新
16.8中 expirationTime解决了两个事:优先级,批处理,一个字段两个事都做了
缺点是Suspense出现,高优先级io任务(Suspense相关的任务)会阻塞,低优先级cpu任务,只能一次处理一个优先级任务
17增加了lanes lanes(一个优先级lane 多个优先级lanes)分开了优先级,批处理 能同时执行多个优先级任务(合并优先级)
源码 & 源码的反码+1
hooks没有批处理
Reconciler协调器