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)