欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

淺談JavaScript中setInterval和setTimeout的使用問題

 更新時間:2015年08月01日 16:55:34   作者:Libuchao''s blog  
這篇文章主要介紹了淺談JavaScript中setInterval和setTimeout的使用問題,作者建議在任務(wù)龐大時盡量避免使用setInterval,需要的朋友可以參考下

說到setInterval,就不得不提到setTimeout,二者都是用于定時執(zhí)行某函數(shù),區(qū)別在于setTimeout 只執(zhí)行一次,而setInterval可以一直連續(xù)不斷執(zhí)行下去,典型用法如下:

function do_sth() { console.log('Hello...'); }

setTimeout(do_sth, 2500);  // 2.5 秒后,執(zhí)行 do_sth 函數(shù)(只執(zhí)行一次)
setInterval(do_sth, 3500); // 3.5 秒后,執(zhí)行 do_sth 函數(shù)(每隔 3.5 秒執(zhí)行一次,一直執(zhí)行下去)

表面看上去,二者各有各的用途,沒什么問題。但是如果setInterval所執(zhí)行的函數(shù)是比較耗時的動作,setInterval仍然會按照原計劃安排調(diào)用那個函數(shù),而不考慮之前的任何阻塞,這樣隨著時間的推移,隊列中等待執(zhí)行的函數(shù)就會越來越多。而對于此問題解決方案仍然是采用遞歸調(diào)用setTimeout 的方法,如:

function do_sth() {
 console.log('Hello...');  // 即使這里執(zhí)行比較耗時的動作也沒問題,
                  // 等這里執(zhí)行完了才會再去調(diào)用 setTimeout

 setTimeout(do_sth, 2500); // 安排后續(xù)執(zhí)行
}

do_sth();             // 初次執(zhí)行

這種遞歸調(diào)用的方式,既可以達到循環(huán)執(zhí)行某函數(shù)的目的,有可以防止后續(xù)任務(wù)不斷堆積。

如果你覺得這種方式有點羅嗦,還可以再寫得精煉一些:

(function() {
 console.log('Hello...');  // do something here
 setTimeout(arguments.callee, 2500);
})();

說是這么說,但是如果定時執(zhí)行的任務(wù)開銷很少,setInterval一般是沒什么問題的,但是如果任務(wù)開銷比較大,請務(wù)必使用setTimeout。

相關(guān)文章

  • JavaScript的DOM事件詳解

    JavaScript的DOM事件詳解

    這篇文章主要為大家詳細(xì)介紹了JavaScript的DOM事件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • 淺析JS操作DOM的一些常用方法

    淺析JS操作DOM的一些常用方法

    下面小編就為大家?guī)硪黄狫S操作DOM的一些常用方法。小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • JavaScript中的Math.E屬性使用詳解

    JavaScript中的Math.E屬性使用詳解

    這篇文章主要介紹了JavaScript中的Math.E屬性使用詳解,是JS入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2015-06-06
  • 帶你了解session和cookie作用原理區(qū)別和用法

    帶你了解session和cookie作用原理區(qū)別和用法

    這篇文章主要介紹了session和cookie作用原理,區(qū)別和用法,以及使用過程中的優(yōu)缺點,通過列舉區(qū)別和原理,使讀者更能理解兩者之間的關(guān)系,需要的朋友可以參考下
    2017-08-08
  • JavaScript中對JSON對象的基本操作示例

    JavaScript中對JSON對象的基本操作示例

    JSON格式本就發(fā)自于JavaScript中的對象和數(shù)組,所以js操作起來自然也是最為簡單原始,接下來我們就來看一些常用的JavaScript中對JSON對象的基本操作示例
    2016-05-05
  • 優(yōu)化RequireJS項目的相關(guān)技巧總結(jié)

    優(yōu)化RequireJS項目的相關(guān)技巧總結(jié)

    這篇文章主要介紹了優(yōu)化RequireJS項目的相關(guān)技巧總結(jié),RequireJS是一個人氣JavaScript庫,需要的朋友可以參考下
    2015-07-07
  • javascript 多瀏覽器 事件大全

    javascript 多瀏覽器 事件大全

    javascript 多瀏覽器 事件大全 ,對于一些事件的使用限制于觸發(fā)方法可以參考下。
    2010-03-03
  • JavaScript在XHTML中的用法詳解

    JavaScript在XHTML中的用法詳解

    下面的代碼在HTML中是有效的,但在XHTML中則是無效的接下來為大家介紹下JavaScript在XHTML中的用法,感興趣的朋友可以參考下哈
    2013-04-04
  • JavaScript 遞增、遞減運算符實例

    JavaScript 遞增、遞減運算符實例

    遞增、遞減運算符實例,基礎(chǔ)Js代碼范例,新手可參考哦。
    2010-07-07
  • 淺談js基本數(shù)據(jù)類型和typeof

    淺談js基本數(shù)據(jù)類型和typeof

    下面小編就為大家?guī)硪黄獪\談js基本數(shù)據(jù)類型和typeof。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08

最新評論