分为两个阶段:
- schedule:选出当前最优先的工作,满足执行条件,去触发执行
- preform:执行
shouldYeild打断机制:
- schedule,宏观打断,调度下一个任务时会判断是否在切片时间
- preform:微观打断,任务里可以调用scheduler的shouldYeild方法进行微观打断。像fiber增量渲染就是引用了微观打断
- schedule是异步执行的,每次执行都在一个切片时间内,超过时间会把接下来的任务交给下一个异步。中间就是把控制权交给主线程。
高优先级打断低优先级的例子
当一个正在执行低优先级任务因为切片时间被微观打断后,主线程插入了一个高优先级任务,接下来下一个异步任务会执行高优先级任务,低优先级任务当前的的状态会被保留,下次轮到时继续执行下去。