В 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 миллисекунд?