Trong JavaScript, setTimeout(callback, delay)
có nghĩa là "hãy gọi callback
sau delay
mili giây". Nhưng nếu delay
là 0
thì sao? Nó có nên gọi callback
ngay lập tức không?SetTimeout làm gì khi được đặt thành 0 mili giây?
Tôi đang bối rối vì những gì tôi thấy khi chạy đoạn mã sau:
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');
}
này ghi lại sau vào giao diện điều khiển:
tôi mong đợi để xem AAA
đăng nhập nhiều sớm hơn thế. Đã có thời gian để thực hiện 4000 cuộc gọi khác đến console.log
trước khi một chức năng cần được gọi ngay lập tức.
Ai đó có thể giải thích những gì setTimeout
đang thực hiện khi trì hoãn được đặt thành 0 mili giây không?
Kiểm tra [này] (http://stackoverflow.com/questions/779379/why-is-settimeoutfn-0-sometimes-useful) – Trung
https://developer.mozilla.org/en-US/docs/Web/API/WindowTimers/setTimeout – Nipuna
Một grea t giải thích về câu hỏi của bạn! Kiểm tra [this] (http://geekabyte.blogspot.in/2014/01/javascript-effect-of-setting-settimeout.html). – deepakb