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?
0 Commentaires