1. 程式人生 > >setTimeout和setInterval解析,妙用setTimeout代替setInterval進行間歇呼叫

setTimeout和setInterval解析,妙用setTimeout代替setInterval進行間歇呼叫

 "在開發環境下,很少使用間歇呼叫(setInterval),原因是後一個間歇呼叫很可能在前一個間歇呼叫結束前啟動"

 妙用setTimeout代替setInterval進行間歇呼叫如下

function func(){
    ​/****執行程式碼****/
    var settimeStr=setTimeout(func,1000);
    if(){
        clearTimeout
    }//清除定時器
​    
}

setTimeout

setTimeout函式用來指定某個函式或某段程式碼,在多少毫秒之後執行。 

var timerId = setTimeout(func|code, delay),func可以自定義方法執行內容,code必須以字串形式寫入,因為定時器內部引擎封裝的eval方法,如下:

setTimeout('console.log(2)',1000);

setTimeout共有4個引數。最後那兩個引數,將在1000毫秒之後回撥函式執行時,作為回撥函式的引數,如下所示:10,10。

setTimeout(function(i,j){
  console.log(a+b);
},1000,10,10);

IE 9.0以下版本,只允許setTimeout有兩個引數,同時func是屬於全域性範圍類執行

setInterval 

大致同settimeout,

區別:setInterval間歇呼叫,是在前一個方法執行前,就開始計時,比如間歇時間是500ms,那麼不管那時候前一個方法是否已經執行完畢,都會把後一個方法放入執行的序列

中。有可能前面一個方法還沒執行完後面一個程式已經開始,比如func中執行alert,不點選確定