Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] setInterval

Olá! tudo bem? Nessa aula o professor falou sobre a variável que armazenamos o valor do setInterval. por exemplo:

intervalo = setInterval(decrementoTempo, 1000);

Eu entendi a lógica do clearInterval que quando colocamos: clearInterval(intervalo); ele para o Intervalo, mas fiquei com algumas dúvidas:

  1. Qual valor esta armazenado na variavel "intervalo"? eu tentei dar o console.log e o valor printado foi "1", mas não entendi direito e não sei se esta certo também
  2. Por qual motivo, depois do clearInterval, temos que dizer que "intervalo = null", já que o clear ele já faz parar o intervalo de execução?

Irei mostrar mais o meu código feito, caso tenha confusão nas perguntas:

function timerInitOrPause() {
    if (intervalo) {
        zerar();
        return;
    }
    intervalo = setInterval(decrementoTempo, 1000); // recebe em milissegundos
}

function zerar() {
    clearInterval(intervalo);
    intervalo = null;
}
1 resposta
solução!

Oii Rian, tudo bem?

  1. Quando você usa a função setInterval(), ela te dá um número único (um identificador) para o intervalo que você criou. Esse número pode ser usado mais tarde com a função clearInterval() para parar o intervalo. Então, quando você vê "1" ao fazer console.log(intervalo), é provavelmente esse identificador. O valor exato pode mudar dependendo do ambiente em que você está rodando o código e de quantos intervalos foram criados antes deste.

  2. Quando você faz clearInterval(intervalo), é bom definir intervalo = null depois. Isso garante que a variável intervalo não mantenha uma conexão com o identificador do intervalo que foi parado. Isso pode evitar erros no futuro se você tentar clearInterval(intervalo) novamente, e também pode liberar memória no seu programa, especialmente se você estiver criando e parando muitos intervalos.

Por exemplo, no seu código, há um if (intervalo). Se você não definir intervalo = null depois do clearInterval(intervalo), o if (intervalo) sempre será verdadeiro após o primeiro setInterval(decrementoTempo, 1000), mesmo que o intervalo tenha sido parado. Com intervalo = null, você garante que o if (intervalo) só é verdadeiro se um intervalo estiver realmente rodando.

Espero que isso ajude.

Um abraço e bons estudos.