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

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

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
22 мая 2024, в 10:07
25000 руб./за проект
22 мая 2024, в 10:04
2000 руб./за проект
22 мая 2024, в 09:45
3000 руб./за проект