<!DOCTYPE html>
<html lang="">
<head<img src=">" alt="" width="50%" />
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
</head>
<body>
<div class="div-box">
<button id="btn">点我插入10000条数据</button>
<div id="container"></div>
</div>
<script>
const btn = document.getElementById('btn')
let arr = new Array(100000).fill('').map((_, i) => {
return i+1
})
btn.onclick = function () {
const taskHandler = function(data, i) {
let div = document.createElement('div')
div.innerHTML = data
document.getElementById('container').append(div)
}
performChunk(arr, taskHandler)
}
function performChunk(arr, taskHandler, scheduler) {
if (arr.length === 0) {
return
}
let i = 0;
function run() {
if (i>=arr.length) {
return
}
requestIdleCallback((idle) => {
while (idle.timeRemaining() > 0 && i < arr.length) {
taskHandler(arr[i], i)
i++
}
run()
})
}
run()
}
</script>
</body>
</html>