Estou estudando NodeJS (veja como instalar o NodeJS no Ubuntu) e meu interesse por javascript aumentou com isso – comecei projetos para estudar desenvolvimento de games em javascript. Nesses estudos percebi que o setInterval e setTimeout são grandes ferramentas para a criação de scripts complexos, mas que são pouco explorados normalmente.
Como alterar o interval no Javascript?
Supondo que você instanciou uma função para ser executada 10 segundos depois que o usuário entrar na página (setTimeout). Mas caso o usuário clique no botão Y esta função tem que ter um novo delay, novamente de 10 segundos.
Não encontrei uma maneira de alterar um timeout ou interval em andamento, então a lógica é cancelar o timer que está em funcionamento e setar um novo timer, com o intervalo desejado.
Vamos por partes, cancelando a função já instanciada.
Como cancelar um setTimeout em javascript
Nosso código:
var agendamento = setTimeout(function(){
console.log('ação agendada!');
}, 1000);
/* Cancela o agendamento */
clearTimeout(agendamento);
Simples assim!
Alterando o intervalo com ação do usuário
var agendamento = setTimeout(function(){
console.log('ação agendada!');
}, 1000);
$('a.cancela').click(function(){
clearTimeout(agendamento);
var agendamento = setTimeout(function(){
console.log('ação agendada!');
}, 1000);
});
Poderia melhorar o código transformando a criação do agendamento em uma função, mas optei por deixar o mais legível para facilitar o entendimento.
Tem alguma forma diferente de fazer isso? Deixe um comentário!