Tengo un bucle for que itera más de 10.000 veces en un código de JavaScript. El bucle for crea y agrega < div etiquetas en un cuadro en la página actual DOM.Javascript: ¿Cómo poner un simple retraso entre la ejecución del código javascript?
for(i = 0; i < data.length; i++)
{
tmpContainer += '<div> '+data[i]+' </div>';
if(i % 50 == 0) { /* some delay function */ }
}
containerObj.innerHTML = tmpContainer;
Quiero poner un retraso cada 50 < div> etiquetas por lo que será el código en el lugar de
/* some delay function */
porque su tomar demasiado tiempo para cargar todos los 10.000 < div> etiquetas. Quiero actualizar el cuadro en trozos de 50 < div> etiquetas.
gracias de antemano.
Eso funcionará, pero dos comentarios: 1. Crea innecesariamente una ** nueva ** función cada vez que llegue a 50 divs. Eso es 199 funciones innecesarias. Probablemente está bien, pero aún así, evitable. 2. Es más eficiente compilar HTML en una matriz de cadenas, y luego usar 'a.join (" ")' para crear una cadena grande cuando hayas terminado, que usar concatenación de cadenas para construir el HTML. –
@ T.J. tiene razón sobre ambos puntos, pero no me molesté por simplicidad: 1. La creación de funciones rara vez es un problema de rendimiento, especialmente cuando su cuello de botella es el DOM, 2. la concatenación de cadenas es solo un problema en IE, y a menudo más rápido en otros navegadores, pero incluso para IE, dado que estoy restableciendo 'tmpContainer' en una cadena vacía, las cadenas nunca se vuelven grandes;) –
realmente buena solución. –