setTimeout

為何setTimeout時(shí)間參數(shù)設(shè)置為0,還是會(huì)延遲?

setTimeout(要執(zhí)行的任務(wù),間隔時(shí)間) 定時(shí)器任務(wù)只執(zhí)行一次,一般用于一次性延時(shí)問題

用法一:setTimeout( function(){}, 時(shí)間)

用法二:function fn()? ?該函數(shù)可重復(fù)使用

????????????????setTimeout(任務(wù)名稱函數(shù)名fn, 間隔時(shí)間)

清除: clearTimeout

有一個(gè)概念:

js是單線程的,單線程就意味著,所有任務(wù)需要排隊(duì),前一個(gè)任務(wù)結(jié)束,才會(huì)執(zhí)行后一個(gè)任務(wù)。如果前一個(gè)任務(wù)耗時(shí)很長(zhǎng),后一個(gè)任務(wù)就不得不一直等著。

而瀏覽器的內(nèi)核是多線程的,它們?cè)趦?nèi)核制控下相互配合以保持同步,一個(gè)瀏覽器至少實(shí)現(xiàn)三個(gè)常駐線程:javascript引擎線程,GUI渲染線程,瀏覽器事件觸發(fā)線程。

當(dāng)js代碼執(zhí)行遇到setTimeout(fn,millisec)時(shí),會(huì)把fn這個(gè)函數(shù)放在任務(wù)隊(duì)列中,當(dāng)js引擎線程空閑時(shí)并達(dá)到millisec指定的時(shí)間時(shí),才會(huì)把fn放到j(luò)s引擎線程中執(zhí)行。

setTimeout(fn,0)的含義是,指定某個(gè)任務(wù)在主線程最早可得的空閑時(shí)間執(zhí)行,也就是說,盡可能早得執(zhí)行。它在"任務(wù)隊(duì)列"的尾部添加一個(gè)事件,因此要等到同步任務(wù)和"任務(wù)隊(duì)列"現(xiàn)有的事件都處理完,才會(huì)得到執(zhí)行。

setTimeout()只是將事件插入了"任務(wù)隊(duì)列",必須等到當(dāng)前代碼(執(zhí)行棧)執(zhí)行完,主線程才會(huì)去執(zhí)行它指定的回調(diào)函數(shù)。要是當(dāng)前代碼耗時(shí)很長(zhǎng),有可能要等很久,所以并沒有辦法保證,回調(diào)函數(shù)一定會(huì)在setTimeout()指定的時(shí)間執(zhí)行。

setTimeout()屬于宏任務(wù)隊(duì)列。

用處:

函數(shù)去抖

輪訓(xùn)任務(wù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言: 之前寫過一次被不小心刪掉了,幸好思路和參考資料還在,所以趕快寫下來。里面涉及了一點(diǎn)點(diǎn)dom事件的操作(但不...
    饑人谷_遠(yuǎn)方閱讀 1,600評(píng)論 0 1
  • 計(jì)時(shí)器setTimeout是我們經(jīng)常會(huì)用到的,它用于在指定的毫秒數(shù)后調(diào)用函數(shù)或計(jì)算表達(dá)式。 語法:setTimeo...
    TGCode閱讀 931評(píng)論 0 8
  • JavaScript提供定時(shí)執(zhí)行代碼的功能,叫做定時(shí)器(timer),主要由setTimeout()和setInt...
    晚晴幽草閱讀 1,727評(píng)論 1 18
  • 前言 之所以寫這篇文章是因?yàn)樯现芄ぷ髦惺褂胹etInterval輪詢請(qǐng)求接口時(shí)遇到了一些問題,如果哪里理解的不對(duì)請(qǐng)...
    w_danboard閱讀 887評(píng)論 0 0
  • 生命中非常重要的時(shí)刻被忘記了,是否說明由此而起的情感也會(huì)慢慢消失掉,不再那么重要,不再那么珍惜。
    恒德之閱讀 135評(píng)論 0 0

友情鏈接更多精彩內(nèi)容