Saber2pr's Blog

performWork

performWork 渲染流程

render 渲染流程入口

函数声明

function performWork(deadline: IdleDeadline);

performWork 由 requestIdleCallback 函数注册到后台协同任务队列,当 JS 线程空闲时执行队列中的函数。

函数实现

function performWork(deadline: IdleDeadline) {
  // 内部循环迭代workInProgress
  workLoop(deadline);

  // 如果workInProgress为空了,表示当前渲染任务执行完毕,查看updateQueue是否为空
  // 如果不为空则再请求一次后台协同任务
  if (workInProgress || updateQueue.length) {
    requestIdleCallback(performWork);
  }
}