Aquí es una pieza de código de la fuente de jQuery (bit.ly/jqsource):setTimeout repetida() con 1 miliseg
// The DOM ready check for Internet Explorer
function doScrollCheck() {
if (jQuery.isReady) {
return;
}
try {
// If IE is used, use the trick by Diego Perini
// http://javascript.nwbox.com/IEContentLoaded/
document.documentElement.doScroll("left");
} catch(e) {
setTimeout(doScrollCheck, 1);
return;
}
// and execute any waiting functions
jQuery.ready();
}
Es un truco para detectar cuando el DOM está listo para IE. Aunque teóricamente esto parece muy bonito, estoy un poco preocupado por setTimeout(doScrollCheck, 1);
, lo que significa que la función doScrollCheck()
se llama 1000 veces por segundo antes de que el DOM esté listo.
¿Debo esperar que esto sea un drenaje de gran rendimiento?
Tengo problemas para ver cómo esto * no * sería una pérdida de rendimiento. Por lo menos, está bloqueando el navegador, lo cual nunca es una buena idea. – Blazemonger
Sí, esa es mi pregunta. ¿Por qué * no es * una fuga de rendimiento? (Porque asumo que la gente jQuery está haciendo un buen trabajo aquí.) – Randomblue
IE tiene (¿o ha tenido?) Un mínimo de duración de 'setTimeout/setInterval' de algo así como' 13ms', por lo que no es tan malo como 1000 /segundo. Más como 77/segundo. De todos los problemas de rendimiento de IE, nunca escuché una queja de que '.ready()' de jQuery sea un gran drenaje. – user113716