Os Temporizadores do JavaScript

Postado por: Jeronimo Fagundes em

JavaScript tem duas funções muito úteis que servem para “agendar tarefas” que devam ser executadas. São elas o setTimeout e o setInterval.

O setTimeout tem dois parâmetros; o primeiro é uma string contendo o código a ser executado. O segundo é o tempo, em milissegundos, que se deve esperar para executar tal código. O seguinte trecho de código mostrará um alerta após 2000 milissegundos (ou seja, 2 segundos).

setTimeout("alert('Viva!')", 2000);

A diferença entre setTimeout e setInterval é que o setTimeout executa o código especificado apenas uma vez. O setInterval executa infinitas vezes, com o intervalo de tempo especificado entre cada execução. Por exemplo, o seguinte código exibirá um alerta a cada 10 segundos.

setInterval("alert('Viva!')", 10000);

Você pode se arrepender de ter agendado a execução do código. Nesse caso, são necessárias duas coisas: ter guardado a tarefa numa variável, e usar a função de cancelamento de execução. São duas as funções de cancelamento: clearTimeout, para cancelar as tarefas agendadas com setTimeout, e clearInterval, que cancela as agendadas com setInterval.
Por exemplo, o código abaixo não mostrará alerta algum, pois as tarefas agendadas serão canceladas.

var alerta_unico = setTimeout("alert('Viva!')", 5000);
var alerta_intermitente = setInterval("alert('Viva!')", 10000);

clearTimeout(alerta_unico); // Cancela o alerta agendado em setTimeout
clearInterval(alerta_intermitente); // Cancela o alerta agendado em setInterval

Posts Relacionados

Confira também outros artigos interessantes postados aqui no blog.

Sobre Jeronimo Fagundes

Jerônimo Fagundes da Silva é desenvolvedor web, mora em Porto Alegre e é Bacharel em Ciência da Computação pela UFRGS. Atualmente, é desenvolvedor de aplicativos web na DATACOM Telemática.

6 Responses to “Os Temporizadores do JavaScript”

  1. Simples e rápido, dicas assim valem a pena!

  2. So um comentario, certa vez eu li que nao devemos usar STRING no setTimeout ou no setInterval.

    Devemos sempre usar funcao anonima.
    ex:

    setTimeout(
    function(){
    alert(‘Viva!’);
    }
    , 2000);

    E o mesmo para o setInterval.

  3. Valew, tinha algumas dúvidas sobre

  4. @Alexsandro Correto, ambas as formas são suportadas, uma função a ser invocada ou uma string.
    Coloquei o padrão de string por ser muito utilizado, e ser o único compatível com navegadores muito antigos (leia-se IE4 ou anteriores).
    Não que browsers muito antigos sejam uma preocupação, mas fica documentado que nesses browsers bem antigos só o formato string funcionará.

  5. Essa função é muito interessante, um exemplo prático dessa função é um sistema de chat online, onde a cada xx segundos ele atualiza o arquivo de conversa ( log ).

    Boa Dica! Parabéns.

  6. Não sei se é uma boa pra chat nao…

Leave a Reply