首頁 >web前端 >js教程 >js超時呼叫setTimeout和間歇呼叫setInterval實例分析_javascript技巧

js超時呼叫setTimeout和間歇呼叫setInterval實例分析_javascript技巧

WBOY
WBOY原創
2016-05-16 16:17:351309瀏覽

本文實例分析了js逾時呼叫setTimeout和間歇呼叫setInterval的用法。分享給大家供大家參考。具體如下:

今天看了javascript高階程式設計(第三版)一書,發現說setTimeout比setInterval更好,覺得的確如此。平常都是用setInterval多一點,現在還是轉一下思緒了。又學習到了。分析如下:

setTimeout包含兩個參數,第一個參數是要執行的程式碼,第二個參數是時間。
第一個參數可以是字串也可以是函數,但是建議使用函數而不是字串。
使用字串相當於eval方法。導致性能損失。

clearTimeout()

逾時呼叫的程式碼都是在全域作用域中執行的,因此函數中this的值在費嚴格模式下指向window對象,在嚴格模式下是undefined

複製程式碼 程式碼如下:
//setInval

var num = 0;
var max = 10;
var intervalId = null;

function incrementNumber(){
   num ;
   if(num == max){
      clearInterval(innervalId);
      alert('done');
   }
}

intervalId = setInterval(incrementNumber(),500);

//setTimeout 實現相同功能

var num = 0;
var max = 10;
function incrementNumber2(){
   num ;
   if(num       setTimeout(incrementNumber2,500);
   }else{
      alert('done');
   }
}
setTimeout(incrementNumber2,500);

以上對比可以發現,使用超時調用時,沒有必要追蹤超時調用id,因為每次執行程式碼之後,如果不再設定另一次超時調用,調用就會自行停止。

一般認為,如果逾時呼叫用來模擬間歇呼叫的是一種最佳模式。

在開發環境下,很少真正的間歇調用,原因是後一個間歇調用可能會在前一個間隙調用結束之前啟動。

最好不要使用間歇呼叫。

希望本文所述對大家的javascript程式設計有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn