Back to topics

This article does not have an English body yet. Showing the Chinese version below.

调度器

在把大量VNode递归转换成Dom的时候,如果数据量非常大会导致性能低下,页面卡顿。

调度器用分治思想,把大任务拆分成若干小任务,避免长时间阻塞主线程。

我们可以基于requestIdleCallback实现一个简单的调度器。

let task = 1
function workLoop(deadline){
  taskId++
  
  let shouldYield = false
  while(!shouldYield){
    //run task
    shouldYield = deadline.timeRemaining() < 1;
  }
}

requestIdleCallback(workLoop)