В JavaScript setTimeout(callback, delay) означает "вызов callback после delay миллисекунд". Но что, если delay 0? Должен ли он позвонить callback сразу?
Я запутался из-за того, что вижу, когда запускаю следующий код:
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');
}
Это приводит к записи на консоль следующих команд:
Я ожидал увидеть AAA, зарегистрированного намного раньше этого. Было время, чтобы выполнить 4000 других вызовов console.log перед функцией, которая должна была быть вызвана немедленно.
Может кто-нибудь объяснить, что делает setTimeout, когда для задержки установлено значение 0 миллисекунд?
