30/09/2018, 16:34

setTimeout(fn,0) trong javascript có ý nghĩa gì?

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 đỡ!

Sáng Béo viết 18:41 ngày 30/09/2018

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.

Ngô Tiến Thái viết 18:43 ngày 30/09/2018

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ỗ đó!

Dang H. viết 18:41 ngày 30/09/2018

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

Ngô Tiến Thái viết 18:39 ngày 30/09/2018

Cám ơn dangh mình mò mãi

Bài liên quan
0