Vue. js Таймер обратного отсчета время от времени пропускает - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть таймер обратного отсчета vue. js следующим образом:

countdownTimer() {
            // exit method if it is active
             if(this.isCountdownActive == true && this.gameState.round === round) return;
             // first time set true
             this.isCountdownActive = true
             this.countdown = 10;
            var downloadTimer = setInterval(() => {
            if(this.countdown <= 0){
                clearInterval(downloadTimer);
                if (this.thisUser.captain) {
                        console.log("submit turn end")
                        Store.submitTurnEnd();
                        this.countdown = 10
                    }
                    // On exit interval, restart to false
          this.isCountdownActive = false
            }
            this.countdown -= 1
            }, 1000);
        },

Я бы сказал, что в 75% случаев он работает идеально, однако в остальные 25% случаев он работает. глюки, так что он передает поворот либо дважды, либо сразу. Как я могу убедиться, что этого не произойдет. Я хотел бы убедиться, что он отправляется только один раз и очищает интервал как можно скорее.

Спасибо за помощь.

1 Ответ

0 голосов
/ 11 апреля 2020

Скорее всего, вы вызываете метод несколько раз.

Ваше условие досрочного спасения

if(this.isCountdownActive == true && this.gameState.round === round) return;

Вы полагаетесь на this.gameState.round, равное round, если это не Если вы зарегистрируете обратный отсчет несколько раз.

...