Пытаюсь сделать класс, который создает таймер обратного отсчета с автоочисткой setInterval и с методом очистки и вызовом callback при его остановке. Сейчас у меня выходит ошибка: this.clear is undefined. В чем может быть дело?
export class IntervalTimer {
constructor(callback, timer, interval = 1000) {
this.cb = callback;
this.counter = 1;
this.startTime = Date.now();
this.interval = interval;
this.timer = timer;
this.init();
}
clear() {
clearTimeout(this.timeoutId);
}
init() {
const nowTime = Date.now();
const nextTime = this.startTime + this.counter * this.interval;
this.timeoutId = setTimeout(this.init, this.interval - (nowTime - nextTime));
this.counter += 1;
if (this.timer > 0) {
this.timer -= 1
console.log(this.timer)
} else {
this.clear();
this.cb();
}
}
}