天天看點

為什麼要用setTimeout模拟setInterval?

一 setInterval的時間誤差

setInterval(fn,300);      

setTimeout 執行機制

setTimeout(fn,300);      

二 用setTimeout 模拟 setInterval

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);
      }
    }
  }      

繼續閱讀