真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么用setTimeout模擬setInterval

這篇文章主要介紹“怎么用setTimeout模擬setInterval”的相關(guān)知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么用setTimeout模擬setInterval”文章能幫助大家解決問題。

成都創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,先為平頂山等服務建站,平頂山等地企業(yè),進行企業(yè)商務咨詢服務。為平頂山企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

一 setInterval的時間誤差

setInterval(fn,300);

setInterval 執(zhí)行機制,300ms會檢測一次任務隊列中有無未執(zhí)行的上一次任務fn,如果沒有則將fn加入任務隊列,如果有則跳過。由于js單線程,如果在執(zhí)行fn前還要耗時的任務執(zhí)行,則會暴露缺點
1.某些間隔會被跳過
2.可能多個定時器會連續(xù)執(zhí)行

setTimeout 執(zhí)行機制

setTimeout(fn,300);

每隔300ms會將fn加入到任務隊列中。

二 用setTimeout 模擬 setInterval

1.利用setTimeout能解決 間隔會被跳過缺點
2.利用遞歸調(diào)用setTimeout 能解決多個定時器連續(xù)執(zhí)行的缺點,確保執(zhí)行fn的間隔時間>=300ms;由于js單線程,只能保證每隔300將fn加入到任務隊列,fn執(zhí)行的時機與任務隊列中的其他任務是否執(zhí)行完畢有關(guān)。

class Poll{
    constructor(){
      this.clearTime = null;
    }
    setInter(fn,time){
      this.clearTime = setTimeout(()=>{
        fn();
        this.setInter(fn,time);
      },time)
    }
    clearInter(){
      if(this.clearTime){
        clearTimeout(this.clearTime);
      }
    }
  }

關(guān)于“怎么用setTimeout模擬setInterval”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,小編每天都會為大家更新不同的知識點。


新聞標題:怎么用setTimeout模擬setInterval
本文來源:http://weahome.cn/article/gchgjd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部