setTimeout和setInterval

定時器介紹

setTimeout 用于指定多少毫秒數后調用函數或進行計算,例:

  setTimeout(function(){
        console.log("aa");
  },1000);

上段代碼會在1s后在控制臺輸出“aa”,而且只運行一次,運行完就結束
setTimeout創建的定時器會返回一個ID值,利用這個ID值配合clearTimeout可以取消要延遲執行的代碼:

  var t = setTimeout(function(){
        console.log("aa");
  },1000);
clearTimeout(t);

setInterval() 同樣用于指定多少毫秒數后調用函數或進行計算,但其是重復的檢測和執行

var t = setInterval(function(){
        console.log("aa");
  },1000);

上面代碼會每隔1s在控制臺輸出“aa”;
同樣的,setInterval創建的定時器可以用clearInterval()來取消

clearInterval(t);

定時器的問題:

setTimeout()是不精準的,例如使用setTimeout設定一個任務在10ms后執行,但是在9ms時,有一個任務占用了5ms的cpu時間片,再次輪到定時器執行時,時間已經過期4s,所以說是不精準的
setInterval()也存在兩個問題,

  1. 時間間隔可能會跳過
  2. 時間間隔可能小于定時器設置時間
    可以使用setTimeout遞歸調用
setTimeout(function(){
      //processing
    setTimeout(arguments.callee,interval);
},interval);//arguments.callee用來獲取當前執行的函數的引用,并為其設置另一個計時器
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容