用setTimeout實(shí)現(xiàn)setInterval

起因:

閑來無事和同事交流遇到過那些經(jīng)典的面試題,同事說有次面試讓用用setTimeout實(shí)現(xiàn)setInterval并實(shí)現(xiàn)clearInterval,話不多說show me code!

function setInv (callback, time) {
   const timmer = setTimeout(() => {
        setInv(callback, time)
        if (!window.isClear) callback()
        // 下邊這行代碼是否有必要呢?
        window.clearTimeout(timmer)
      }, time)
      return timmer
}

function clearInv (timmer) {
  window.isClear = true
  window.clearTimeout(timmer)
}

const myTask = setInv(() => console.log(Date.now()), 2)
setTimeout(() => {
  console.log('清除定時(shí)')
  clearInv(myTask)
}, 5000)

疑問:

同時(shí)也有個(gè)問題setTimeout使用過后要不要清楚釋放內(nèi)存,還是說JS底層的垃圾回收會(huì)幫我做這件事?跪請(qǐng)大神明示
請(qǐng)戳這里??在線演示
LiveDemo

?著作權(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)容

  • 今天跟大家分享一道有趣的題目,大家對(duì)定時(shí)器函數(shù)應(yīng)該都不陌生,但是在開始我們的問題之前,還是簡(jiǎn)單介紹下這兩個(gè)方法。 ...
    Wendy曹閱讀 18,994評(píng)論 3 9
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,355評(píng)論 25 708
  • 我是為你好。 對(duì)相當(dāng)多的人來說,這句話想必不陌生吧。從小到大,在你面臨一個(gè)個(gè)人生抉擇的時(shí)候它就會(huì)在耳邊悄然響起。 ...
    瀟湘笛閱讀 332評(píng)論 0 0
  • 這幾天,是每年都會(huì)有的考研成績(jī)出來的時(shí)候,在過完了讓自己焦慮的春節(jié)這段痛苦焦灼的日子后,這個(gè)令自己魂?duì)繅?mèng)繞的日子終...
    大張小調(diào)閱讀 1,516評(píng)論 11 41

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