O que setTimeout está fazendo quando definido como 0 milissegundos?
Em JavaScript,setTimeout(callback, delay)
significa "ligarcallback
depois dedelay
milissegundos ". Mas e sedelay
é0
? Deveria ligarcallback
Imediatamente?
Estou confuso por causa do que vejo quando executo o seguinte 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');
}
Isso registra o seguinte no console:
Eu esperava verAAA
logado muito antes disso. Houve tempo para executar outras 4000 chamadas paraconsole.log
antes de uma função que deveria ter sido chamada imediatamente.
Alguém pode explicar o quesetTimeout
está fazendo quando o atraso é definido como 0 milissegundos?