在 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
会比这更早地看到记录。有时间console.log
在应该立即调用的函数之前执行 4000 次其他调用。
有人可以解释setTimeout
当延迟设置为 0 毫秒时在做什么吗?