Respostas:
Você quer setInterval()
:
var intervalID = setInterval(function(){alert("Interval reached");}, 5000);
O primeiro parâmetro para setInterval () também pode ser uma sequência de código a ser avaliada.
Você pode limpar uma função periódica com:
clearInterval(intervalID);
setInterval()
é a resposta correta para a pergunta, independentemente do parâmetro. É apenas um exemplo, e ambos os métodos estão corretos por definição.
Observe que setInterval () geralmente não é a melhor solução para execução periódica - depende realmente de qual javascript você está chamando periodicamente.
por exemplo. Se você usar setInterval () com um período de 1000ms e na função periódica fizer uma chamada ajax que ocasionalmente leva 2 segundos para retornar, você fará outra chamada ajax antes que a primeira resposta volte. Isso geralmente é indesejável.
Muitas bibliotecas têm métodos periódicos que protegem contra as armadilhas do uso de setInterval de forma ingenuidade, como o exemplo de Prototype fornecido por Nelson.
Para obter uma execução periódica mais robusta com uma função que possui uma chamada ajax jQuery, considere algo como isto:
function myPeriodicMethod() {
$.ajax({
url: ...,
success: function(data) {
...
},
complete: function() {
// schedule the next request *only* when the current one is complete:
setTimeout(myPeriodicMethod, 1000);
}
});
}
// schedule the first invocation:
setTimeout(myPeriodicMethod, 1000);
Outra abordagem é usar setTimeout, mas rastrear o tempo decorrido em uma variável e, em seguida, definir o atraso de tempo limite em cada chamada dinamicamente para executar uma função o mais próximo possível do intervalo desejado, mas nunca mais rápido do que você pode obter respostas de volta.
Todo mundo já tem uma solução setTimeout / setInterval. Eu acho que é importante observar que você pode passar funções para setInterval, não apenas strings. Na verdade, é provavelmente um pouco "mais seguro" passar funções reais em vez de strings que serão "avaliadas" para essas funções.
// example 1
function test() {
alert('called');
}
var interval = setInterval(test, 10000);
Ou:
// example 2
var counter = 0;
var interval = setInterval(function() { alert("#"+counter++); }, 5000);
Pergunta antiga, mas .. Eu também precisava de um executor de tarefas periódica e escrevi TaskTimer . Isso também é útil quando você precisa executar várias tarefas em intervalos diferentes.
// Timer with 1000ms (1 second) base interval resolution.
var timer = new TaskTimer(1000)
// Add task(s) based on tick intervals.
timer.addTask({
name: 'job1', // unique name of the task
tickInterval: 5, // run every 5 ticks (5 x interval = 5000 ms)
totalRuns: 10, // run 10 times only. (set to 0 for unlimited times)
callback: function (task) {
// code to be executed on each run
console.log(task.name + ' task has run ' + task.currentRuns + ' times.');
}
});
// Start the timer
timer.start();
TaskTimer
funciona tanto no navegador quanto no nó. Consulte a documentação para todos os recursos.
Você deseja dar uma olhada em setInterval () e setTimeout ().
Aqui está um artigo tutorial decente .
sim - veja setInterval
esetTimeout
execute o código em determinados horários. setInterval seria o único a ser usado para executar o código periodicamente.
Veja uma demonstração e responda aqui para uso
Como você deseja que a função seja executada periodicamente , use setInterval
A maneira nativa é de fato setInterval()
/ clearInterval()
, mas se você já estiver usando a biblioteca Prototype, poderá aproveitar o PeriodicalExecutor:
new PeriodicalUpdator(myEvent, seconds);
Isso evita a sobreposição de chamadas. Em http://www.prototypejs.org/api/periodicalExecuter :
"protege você contra várias execuções paralelas da função de retorno de chamada, caso demore mais do que o intervalo especificado para executar (mantém um sinalizador de" execução "interno, protegido contra exceções na função de retorno de chamada). Isso é especialmente útil se você use um para interagir com o usuário em intervalos determinados (por exemplo, use uma chamada rápida ou confirme): isso evitará várias caixas de mensagens aguardando para serem acionadas. "