Descomplicando as funções setTimeout e setInterval no Javascript

Vamos te apresentar duas funções nativas do Javascript para manipulação de eventos relacionados ao tempo.

Publicado em

O Javascript contém muitas funções que podem ser utilizadas para a manipulação de tempo, dentre elas as funções setInterval, clearInterval e setTimeout. Cada uma dessas funções tem uma funcionalidade especial e também, assinaturas diferentes.

A seguir você verá a explicação de cada uma dessas funções e ao término do artigo, nossa videoaula completa explicando e criando códigos na prática.

Função setTimeout

A função setTimeout aguarda um determinado tempo em milésimos de segundos para disparar uma chamada a uma função. Pode ser utilizada para monitorar se algum elemento está disponível após alguns segundos.

Passamos no primeiro parâmetro uma função de callback e no segundo, o tempo de execução em milésimos.

setTimeout(funcao_aqui(), tempo_de_execucao)

const timeout = setTimeout(function(){
     //Faz alguma coisa
}, 3000) //Após 3 segundos a função é executada.

Veja que a variável timeout recebe o retorno da função setTimeout, com isso, conseguimos anular a execução da função, através de uma outra chamada clearTimeout. Veja abaixo a sua utilização

//Cancelamos a execução da função setTimeout.
clearTimeout(timeout)

Nota: A função setTimeout será executada apenas uma única vez. Caso deseje que a execução aconteça várias vezes, então você poderá usar a função setInterval, que vamos ver a seguir.

Função SetInterval

Essa função faz uma execução de forma cíclica, ou seja, é executada repetidas vezes até que sua execução seja cancelada. Recebe no primeiro parâmetro uma função de callback, quanto no segundo, o tempo para ser executado.

const interval = setInterval(() => {
    //Faz alguma coisa
}, 3000)

A sua forma de funcionamento é muito similar à da setTimeout, que já vimos mais acima. A diferença aqui é que aqui ela será executada várias e várias vezes.
Podemos também anular a sua execução, para isso usamos a função clearInterval. Veja o exemplo abaixo.

clearInterval(interval)

Nossa videoaula

Você pode assistir nossa videoaula completa e ver exemplos práticos.

Confira abaixo todos os códigos utilizados durante as aulas.

Exemplo setTimeout.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Timeout</title>

    <script>

        // setTimeout(function () {
        //     changeText()
        // }, 1000)

        setTimeout(changeText, 1000)

        function changeText() {
            document.querySelector('#text').innerText = 'Hello World!'
        }

    </script>
</head>

<body>
    <h1 id="text">Waiting...</h1>
</body>

</html>

Exemplo setInterval.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Interval</title>

    <script>
        let time = 0

        let interval = setInterval(function () {
            changeText()

            time++
        }, 500)

        function changeText() {
            document.querySelector('#text').innerText = `Current value: ${time}`
        }

        document.addEventListener('DOMContentLoaded', () => {
            document.querySelector('#btnStop').addEventListener('click', (event) => {
                clearInterval(interval)
            })
        })

    </script>
</head>

<body>
    <h1 id="text">0</h1>

    <button type="button" style="color:red" id="btnStop">Stop</button>
</body>

</html>


 

Gunnar Correa
Gunnar Correa

Autodidata, Graduado em Desenvolvimento Web, Especialista em Tecnologias na Educação e Pós-graduando em Segurança da Informação. Começou seus estudos na área de programação quando era criança, e atualmente, está estudando desenvolvimento de jogos. Fundador da SatellaSoft, criado em 2009 com o intuito de compartilhar conhecimento de forma gratuita e inédita.

Deixe um comentário
Aguarde...