js逾時調用setTimeout和間歇調用setInterval執行個體分析,js定時器setinterval

來源:互聯網
上載者:User

js逾時調用setTimeout和間歇調用setInterval執行個體分析,js定時器setinterval

本文執行個體分析了js逾時調用setTimeout和間歇調用setInterval的用法。分享給大家供大家參考。具體如下:

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

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

clearTimeout()

逾時調用的代碼都是在全域範圍中執行的,因此函數中this的值在費strict 模式下指向window對象,在strict 模式下是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 < max){
      setTimeout(incrementNumber2,500);
   }else{
      alert('done');
   }
}
setTimeout(incrementNumber2,500);

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

一般認為,如果逾時調用用來類比間歇調用的是一種最佳模式。

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

最好不要使用間歇調用。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.