<button class="button">
开始
</button>
<div class="box">
</div>
let num = 10000;
let batchSize = 100;
let arr = Array.from({ length: num }, (_, i) => i);
function timeChunk(arr, fn, count) {
var len = arr.length;
var start = function () {
for (var i = 0; i < Math.min(count || 1, arr.length); i++) {
var obj = arr.shift();
fn(obj);
}
};
return function () {
var t = setInterval(function () {
if (arr.length === 0) {
clearInterval(t);
} else {
start();
}
}, 200);
}
}
$('.button').click(function () {
let addBatch = timeChunk(arr, function (index) {
let p = document.createElement('p');
p.textContent = `第${index}条数据`;
$('.box').append(p);
}, batchSize);
addBatch();
});
function timeChunk(arr, fn, count) {
var len = arr.length;
var start = function () {
var fragment = document.createDocumentFragment();
for (var i = 0; i < Math.min(count || 1, arr.length); i++) {
var obj = arr.shift();
fn(obj, fragment);
}
$('.box').append(fragment);
if (arr.length > 0) {
requestAnimationFrame(start);
}
};
return start;
}
$('.button').click(function () {
let addBatch = timeChunk(arr, function (index, fragment) {
let p = document.createElement('p');
p.textContent = `第${index}条数据`;
fragment.appendChild(p);
}, batchSize);
requestAnimationFrame(addBatch);
});