Что делает setTimeout при значении 0 миллисекунд?
В JavaScriptsetTimeout(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 миллисекунд?