1
resposta

Qual o ponto de limparmos o intervalo em todo play sendo que o stop ja o limpou?

No começo da aula o instrutor nos ensina a como solucionar o bug de termos mais de um setInterval() rodando ao mesmo tempo e incrementando o timer, usando essa lógica

const moment = require('moment');
let segundos;
let timer;

module.exports = {
    iniciar(el) {
        let tempo = moment.duration(el.textContent);
        segundos = tempo.asSeconds();
        // removendo o setInterval anterior
        clearInterval(timer);
        timer = setInterval(() => {
            segundos++;
            el.textContent = this.segundosParaTempo(segundos);
        }, 1000);
    }, parar() {

    }, segundosParaTempo(segundos) {
        return moment().startOf('day').seconds(segundos).format("HH:mm:ss");
    }

Mas qual o ponto de limparmos o intervalo toda vez que começamos, se logo depois nós preenchemos a função parar com um clearInterval() ?

// timer.js

const moment = require('moment');
let segundos;
let timer;

module.exports = {
    iniciar(el) {
        let tempo = moment.duration(el.textContent);
        segundos = tempo.asSeconds();
        // removendo o setInterval anterior
        clearInterval(timer);
        timer = setInterval(() => {
            segundos++;
            el.textContent = this.segundosParaTempo(segundos);
        }, 1000);
    }, parar() {
        clearInterval(timer);
    }, segundosParaTempo(segundos) {
        return moment().startOf('day').seconds(segundos).format("HH:mm:ss");
    }
}

Quando clicamos para parar ele já limpa o timer anterior, não tem porque limparmos novamente na função iniciar, eu mesmo fiz meu código desta forma:

const moment = require('moment')
let segundos;

module.exports = {
    iniciar (el) {
        let tempo = moment.duration(el.textContent)
        segundos = tempo.asSeconds()
        timer = setInterval(() => {
            segundos++
            el.textContent = moment().startOf('day').seconds(segundos).format('HH:mm:ss')
        }, 1000)
    },
    parar () {
        clearInterval(timer)
    }
}

e não tive nenhum problema pois o parar() já limpa o timer para nós

1 resposta
O post foi fechado pois este curso foi descontinuado e não faz mais parte da grade oficial. Bons Estudos!