Em có làm theo một số tutorial trên http://tympanus.net/codrops thấy có trường hợp sủ dụng setTimeout(fn,0) em có tìm hiểu thử thì ra cái này http://stackoverflow.com/questions/779379/why-is-settimeoutfn-0-sometimes-useful và một số nữa, đọc xong thấy vẫn rất lan man, mong mọi người giúp đỡ!
setTimeout(fn,0) trong javascript có ý nghĩa gì?
setTimeout(function,time)
theo mình biết thì nó gọi lại hàm function
sau 1 khoảng thời gian time
.
uk, mình cũng biết vậy nhưng tại sao trong một số trường hợp người ta lại cho thời gian bằng 0, mình không hiểu chỗ đó!
Về cơ bản thì browser không thực hiện chính xác đến millisecon nên 0 hay 1 thì cũng như nhau. Đây là 1 cái mẹo phổ biến để buộc cái hàm trong setTimeout
thực thi sau khi các dòng lệnh chính đã chạy xong.
Khi bạn gọi setTimeout
thì cái hàm được setTimeout
sẽ được thực thi trong 1 call stack mới (không biết dịch là gì ) sau khi stack chính thực thi xong.
Ví dụ như bạn có đoạn code bên dưới
var f1 = function () {
setTimeout(function(){
console.log("f1", "First function call...");
}, 0);
};
var f2 = function () {
console.log("f2", "Second call...");
};
f1();
f2();
Thì kết quả sẽ là
Bạn xem thêm ở đây nhé http://geekabyte.blogspot.com/2014/01/javascript-effect-of-setting-settimeout.html
Cám ơn dangh mình mò mãi