как я могу повторно вызвать эту функцию?не опытный с ES6 - PullRequest
0 голосов
/ 14 апреля 2019

Я не знаю, как вызвать counter () во второй раз после запуска при загрузке страницы

Я сделал новый "экземпляр" счетчика, я думаю. И это работает, но должен быть правильный путь. Мне нужно позвонить в replay ()

/**
 * @fileoverview demo 
 */

class ReVideo {
    constructor() {
        this.time = 5;
...
        this.timer = document.getElementById("update");
        this.counter = setInterval(() => this.countdown(), 1000);
        this.fader = fader();
        this.counter2 = "";
...

        this.retry.addEventListener('click', () => this.replay());
...
    }

    countdown() {
        this.time--;
        if (this.time > -1) {
            this.timer.innerHTML = "seconds remaining: " + this.time;
        } else {
            this.timer.innerHTML = "You Lose!";
            this.watch.style.display = "block";
            this.retry.style.display = "block";
            clearInterval(this.counter);
            clearInterval(this.counter2);
            this.coins++;
            this.coinCount.innerHTML = "Coins: " + this.coins;
        }
        this.notice.style.visibility = "visible";
        this.notice.innerHTML = "Loaded";
    }

...

    replay() {
        this.time = 5;
        this.watch.style.display = "none";
        this.notice.style.visibility = "hidden";
        fader("Loaded");
        this.retry.style.display = "none";
        this.counter2 = setInterval(() => this.countdown(), 1000);
        this.counter2;
    }
...

}
new ReVideo();

Он не запускается, если я говорю counter ();

1 Ответ

0 голосов
/ 14 апреля 2019

У вас может быть вспомогательная counter функция для возврата intervalID, например:

counter () {
  const interval = setInterval(() => this.countdown(), 1000);
  return interval;
}

и в своем конструкторе вы можете присвоить intervalID некоторой переменной, например:

this.interval = counter();

Затем вы можете остановить счетчик, передав переменную, удерживающую intervalID как clearInterval(this.interval);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...