Ticker

6/recent/ticker-posts

Ad Code

Responsive Advertisement

以下代码 clearInterval 为什么不生效?

class Interval {
  constructor() {
    this.timeMap = {};
    this.id = 0;
  }
  setInterval = (cb, time) => {
    let fn = () => {
      cb();
      this.timeMap[this.id] = setTimeout(fn, time);
    };
    this.timeMap[this.id] = setTimeout(fn, time);
    return this.id; // 返回timeId
  };
  clearInterval = (id) => {
    clearTimeout(this.timeMap[id]); // 通过timeMap[id]获取真正的id
    delete this.timeMap[this.id];
  };
}
let s = new Interval(),
  i = 0,
  timer = null;
timer = s.setInterval(() => {
  console.log('timer', timer);
  if (i++ === 2) {
    s.clearInterval(timer); //为什么清除无效
  }
}, 1000);

参考 知乎
https://juejin.cn/post/684490...
自己写了个定时器类期望的是 两秒后不再打印 为什么还是会一直打印 timer?

Enregistrer un commentaire

0 Commentaires