¿Qué hace setTimeout cuando se establece en 0 milisegundos?
En JavaScriptsetTimeout(callback, delay)
significa "llamarcallback
despuésdelay
milisegundos ". Pero ¿y sidelay
es0
? Debería llamarcallback
¿inmediatamente?
Estoy confundido por lo que veo cuando ejecuto el siguiente código:
setTimeout(function() {
console.log('AAA');
}, 0); // Call this in 0 milliseconds
for (i = 0; i < 1000; i++) {
console.log('BBB');
}
for (i = 0; i < 1000; i++) {
console.log('CCC');
}
for (i = 0; i < 1000; i++) {
console.log('DDD');
}
for (i = 0; i < 1000; i++) {
console.log('EEE');
}
Esto registra lo siguiente en la consola:
Esperaba verAAA
registrado mucho antes que eso. Hubo tiempo para ejecutar otras 4000 llamadas aconsole.log
antes de una función que debería haberse llamado de inmediato.
¿Alguien puede explicar quésetTimeout
Qué está haciendo cuando el retraso se establece en 0 milisegundos?