javascript定時器

前言:

javascript提供兩個定時器方法來實現(xiàn)定時的效果,setIterval和setTimeout,同時提供兩個清除定時器的方法clearInterl和clearTimeout.

一谷婆、定時器的作用:

  • 延遲腳本執(zhí)行

  • 自動執(zhí)行重復(fù)操作

二还绘、定時器的特點(以下均以setTimeout為示例,setInterval原理一樣)

1.定時器的執(zhí)行順序

for (var i = 0; i < 5; i++) {

    setTimeout(function () {

        console.log(i)

     }, 10)

}

執(zhí)行以上代碼,發(fā)現(xiàn)控制臺打印出5個5,原因:
javascript是單線程,setTimeout是一個異步任務(wù),js引擎在執(zhí)行javascript任務(wù)時,會先執(zhí)行所有在js引擎任務(wù)中的代碼,在本例中,js引擎從上往下執(zhí)行,發(fā)現(xiàn)setTimeout異步任務(wù),把任務(wù)推到任務(wù)隊列中,待10ms后(本例setTimeout設(shè)置的時間是10ms),setTimeout任務(wù)被加到j(luò)s主線程中,若此時沒有其他任務(wù),則setTimeout任務(wù)被執(zhí)行,若仍然存在其他任務(wù),則setTimeout待其他任務(wù)被執(zhí)行完成后才開始執(zhí)行.本例中,每個setTimeout任務(wù)設(shè)置的時間均為10ms,若在10ms的時間內(nèi)for循環(huán)沒有執(zhí)行完,那么setTimeout任務(wù)則會等待超過10ms的時間,一直到for循環(huán)執(zhí)行完之后才會被執(zhí)行.由此也可以說明,定時器的時間并不是完全準(zhǔn)確,會大于或者等于設(shè)置的時間.

2.定時器id

看下面一段代碼:

    var timer = setTimeout (function () {...}, 10)

    console.log(timer)         //  數(shù)字

timer實際上是定時器的id,是一個數(shù)字,把timer傳入clearTimeout中可以用來清除定時器,在遇到多個定時器的場景,為了避免一個定時器任務(wù)執(zhí)行時其他定時器的影響,一般將所有的定時器id放到數(shù)組中,某一個定時器任務(wù)執(zhí)行時,遍歷清除數(shù)組中其他定時器任務(wù),從而消除其他定時器的影響.

3.setTimeout和setInterval的區(qū)別
  • setTimeout,指定一個setTimeout任務(wù),只執(zhí)行一次

  • setInterval,指定一個setInterval任務(wù),無限執(zhí)行,直至被clearInterval清除才停止

4.定時器的巧妙運用

定時器在項目中除了可以作為定時的作用外還可以用來做耗時代碼的優(yōu)化:
我們假設(shè)有這樣的一個場景纫版,就是在某個頁面中要渲染50萬個節(jié)點,這個時候?qū)τ谝话愕捻椖恐衅茄唬苯愉秩臼遣豢扇〉呐可驗檫@個時候會占用過多的內(nèi)存杠河,導(dǎo)致瀏覽器出現(xiàn)了卡死的狀態(tài),用戶誤以為是頁面卡死而 直接關(guān)閉瀏覽器或者殺死進程傻咖,即使是用戶不關(guān)閉頁面這樣給用戶的體驗也是不好的朋魔,這個時候我們要怎樣來解決這個問題呢,我們可以利用定時器來優(yōu)化這個問題首先我們可以把50萬個節(jié)點分成多組卿操,每組渲染的節(jié)點數(shù)不要過多警检,然后通過setInterval來進行循環(huán)這個既不阻塞JS引擎線程的運行孙援,又可以提高渲染的消耗時間。從而達到最終的優(yōu)化渲染.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末扇雕,一起剝皮案震驚了整個濱河市拓售,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌洼裤,老刑警劉巖邻辉,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異腮鞍,居然都是意外死亡值骇,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門移国,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吱瘩,“玉大人,你說我怎么就攤上這事迹缀∈鼓耄” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵祝懂,是天一觀的道長票摇。 經(jīng)常有香客問我,道長砚蓬,這世上最難降的妖魔是什么矢门? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮灰蛙,結(jié)果婚禮上祟剔,老公的妹妹穿的比我還像新娘。我一直安慰自己摩梧,他們只是感情好物延,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仅父,像睡著了一般叛薯。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上驾霜,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天案训,我揣著相機與錄音,去河邊找鬼粪糙。 笑死强霎,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蓉冈。 我是一名探鬼主播城舞,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼轩触,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了家夺?” 一聲冷哼從身側(cè)響起脱柱,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拉馋,沒想到半個月后榨为,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡煌茴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年随闺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔓腐。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡矩乐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出回论,到底是詐尸還是另有隱情散罕,我是刑警寧澤,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布傀蓉,位于F島的核電站欧漱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏葬燎。R本人自食惡果不足惜硫椰,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望萨蚕。 院中可真熱鬧,春花似錦蹄胰、人聲如沸岳遥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽浩蓉。三九已至,卻和暖如春宾袜,著一層夾襖步出監(jiān)牢的瞬間捻艳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工庆猫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留认轨,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓月培,卻偏偏與公主長得像嘁字,于是被迫代替她去往敵國和親恩急。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 一纪蜒、什么是定時器 JS提供了一些原生方法來實現(xiàn)延時去執(zhí)行某一段代碼衷恭,下面來簡單介紹一下 setTimeout: 設(shè)...
    SSSSSSH閱讀 931評論 1 50
  • 介紹 JavaScript 提供了兩個方法供我們設(shè)置一個定時器,它們分別是 setTimeout() 和 setI...
    ghwaphon閱讀 887評論 0 4
  • 1纯续、下面這段代碼輸出結(jié)果是? 為什么? JavaScript 所有任務(wù)可以分成兩種随珠,一種是同步任務(wù)(synchro...
    zh_yang閱讀 187評論 0 0
  • 下面代碼的輸出結(jié)果: 答案是:10個10 由此,我們來了解一下JavaScript的定時機制猬错。眾所周知窗看,JavaS...
    心徹閱讀 168評論 0 3
  • 讀了杜秋娘唱吟的《金縷衣》,感觸良多兔魂,少年時光確實有幾人能有自己的理想并愿努力奮斗的烤芦,我也是其中之一,乃無大...
    現(xiàn)在_35da閱讀 1,101評論 0 0