Tôi đã cố gắng hiểu về cách thức hoạt động được hoãn lại, do đó, trong tất cả chúng, chúng sử dụng setTimeout
.Tại sao sử dụng setTimeout trong hoãn lại
this.callbacks;// array of functions reference
this.callbacks.forEach(function(callback){
window.setTimeout(function(){
callback(data);
},0);
});
một ví dụ từ this questions sử dụng setTimeout
resolve: function (data) {
this.promise.okCallbacks.forEach(function(callback) {
window.setTimeout(function() {
callback(data)
}, 0);
});
},
là gì khác nhau giữa gọi chức năng trong vòng lặp bởi setTimeout
hơn callback();
hoặc callback.call();
nhưng thời gian được đặt là 0 –
@ Moein7tl: Trên thực tế có giới hạn dưới với thời gian chờ, lớn hơn 0 (IIRC là khoảng 4 giây đối với các trình duyệt phổ biến). Do đó 0 có nghĩa là "ngay sau khi bạn có thể nhận được vòng với nó". Có lẽ những người sử dụng một thời gian chờ không biết về điều này và làm điều đó vào mục đích. – Jon
@ Moein7tl - Có, lưu ý rằng sau khi tôi nói "thời gian đã trôi qua" tôi đã nói ** "và" **. – Quentin