之前做录音组件的时候发现通过JS来进行计时,会造成一定量的误差;

下面描述一下VANT-UI的倒计时组件的思路,后续研究是否可以改进计时功能。

思路:计算结束时间 ---  通过计时器API循环计算结束时间和当前时间的毫秒差 -- 如果差为0则计时

getRemain() {
      return Math.max(this.endTime - Date.now(), 0);
    }

function simpleTick(fn: Function) {
  return setTimeout(fn, 30);
}

microTick() {
      this.tid = simpleTick(() => {
        this.setRemain(this.getRemain());

        if (this.remain !== 0) {
          this.microTick();
        }
      });
    }

start() {
      if (this.counting) {
        return;
      }

      this.counting = true;
      this.endTime = Date.now() + this.remain;
      this.tick();
    }

 

posted on 2020-07-17 17:41  Facker  阅读(630)  评论(0编辑  收藏  举报