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

[Dúvida] intervaloId e contagem regressiva

Eu não entendi o porquê a função zerar, não faz o intervaloId voltar a ficar nulo. Na verdade em todo o trecho seguinte a logica não ficou muita clara para mim

const contagemRegressiva = ()=>{
    if (temporizadorSegundos <=0) {
        audioTempoFinalizado.play()
        alert("Tempo finalizado") 
        zerar()
        return
    }
    temporizadorSegundos-=1
    console.log(temporizadorSegundos);
}
startPauseBT.addEventListener("click", inicio)

function inicio() {
    if (intervaloId) {
        audioPausa.play()
      zerar()  
      return
    }
    audioPlay.play()
    intervaloId = setInterval(contagemRegressiva, 1000 );
    
}
function zerar() {
   clearInterval(intervaloId)
   intervaloId=null
}
1 resposta
solução!

Olá, Mayara, tudo bem?

Na verdade, função zerar() é responsável por interromper a execução do temporizador e definir o valor de intervaloId como null.

Para ficar mais claro irei explicar cada trecho de código:

  • A função contagemRegressiva é responsável por fazer a contagem regressiva do temporizador. Ela verifica se o valor de temporizadorSegundos é menor ou igual a zero. Se for, significa que o tempo chegou a zero ou ficou negativo. Nesse caso, o áudio de tempo finalizado é reproduzido, um alerta é exibido, a função zerar() é chamada para interromper o temporizador e, por fim, a função retorna.

  • A função inicio é chamada quando o botão de start/pause é clicado. Ela verifica se a variável intervaloId possui algum valor. Se tiver, significa que o temporizador está em execução e o botão foi clicado para pausar. Nesse caso, o áudio de pausa é reproduzido, a função zerar() é chamada para interromper o temporizador e, em seguida, a função retorna.

  • Se a variável intervaloId não tiver valor, significa que o temporizador não está em execução e o botão foi clicado para iniciar. Nesse caso, o áudio de play é reproduzido, a função setInterval é chamada para iniciar a contagem regressiva a cada 1 segundo e o valor de intervaloId é atualizado com o identificador retornado por setInterval.

  • A função zerar é responsável por interromper a execução do temporizador. Ela utiliza a função clearInterval para cancelar o intervalo de execução definido por intervaloId e, em seguida, define o valor de intervaloId como null.

Dessa forma, a função zerar() é chamada tanto quando o tempo chega a zero quanto quando o botão de start/pause é clicado, garantindo que o temporizador seja interrompido e intervaloId seja definido como null em ambos os casos.

Espero ter esclarecido.

Caso surja alguma dúvida, não hesite em compartilhar no fórum.

Abraços e até mais!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!