1. Introducción de requisitos previos: los usuarios llaman activamente a algunas funciones, pero debido a razones objetivas, estas funciones afectarán seriamente el rendimiento de la página.
2. Escenario de aplicación: Agregar una gran cantidad de nodos DOM a la página en un corto período de tiempo obviamente abrumará al navegador y, a menudo, hará que el navegador se congele o incluso suspenda la animación.
3. Solución: Tome el ejemplo de agregar nodos anterior para ilustrar el problema. Crearemos nodos en lotes. Por ejemplo, crearemos 1000 nodos en 1 segundo en lugar de crear 8 nodos cada 200 milisegundos.
Cuarto, el código de implementación es el siguiente:
var timeChunk = function(ary, fn, count){
var obj,t;
var len = ary.length;
var start = function(){
for(var i=0;i<Math.min(count ||1, ary.length );i++){
var obj = ary.shift();
fn(obj);
}
};
return function(){
t = setInterval(function(){
if(ary.length === 0){ //如果全部节点都已经被创建好
return clearInterval(t);
}
start();
}, 200); //分批执行的时间间隔,也可以用参数的形式传入
};
};
Cinco, llame al método de verificación
var ary = ['aa','bb','cc',.....];
var renderFriendList = timeChunk( ary, function(n){
var div = document.createElement('div');
div.innerHTML = n;
document.body.appendChild(div);
},8);
renderFriendList();