Почему метод класса undefined и как это исправить?

Пытаюсь сделать класс, который создает таймер обратного отсчета с автоочисткой 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();
        }
    }
}
  • Вопрос задан
  • 125 просмотров
Решения вопроса 1
yarkov
@yarkov Куратор тега JavaScript
Помог ответ? Отметь решением.
this.timeoutId = setTimeout(() => this.init(), this.interval - (nowTime - nextTime));
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы