setTimeOut () ou setInterval (). 4 métodos para aplicar a mesma coisa. qual é melhor?
Eu estou exibindo um relógio de contagem regressiva em relação a um dado endtime.
embora seu trabalho perfeito, mas eu quero saber qual é o melhor método para aplicar.
abaixo está minha função de contagem regressiva.
var timerId;
var postData = {endDate : endDate, tz : tz};
var countdown = function()
{
$.ajax({
type : 'post',
async : false,
timeout : 1000,
url : './ajax_countdown.php',
data : $.param(postData),
dataType : 'json',
success : function (resp){
$('#currentTime').html(resp.remainingTime);
}
});
}
o que eu quero é que a função (contagem regressiva) deve ser chamadaautomaticamente após cada 1 segundo e se ele não for executado / concluído dentro de 1 segundo, cancele o ajax atual e inicie uma nova chamada ajax.
agora eu encontrei existem4 métodos de trabalho
método 1: usandosetInterval () com janela objetowindow.setInterval(countdown, 1000);
método 2: usandosetInterval () independentementesetInterval(function() {countdown()}, 1000);
método 3: usandosetTimeOut dentro da função uma chamada outra função para inicializar a função principalvar countdown = function() {
$.ajax({ //ajax code });
timerId = setTimeout(countdown, 5000); // assign to a variable
}
function clockStart() {
if (timerId) return
countdown();
}
clockStart(); // calling this function
método 4: usandochamada de função anônimavar countdown = function() {
$.ajax({ //ajax code });
timerId = setTimeout(countdown, 5000);
}
(function(){
if (timerId) return;
countdown();
})();
por favor, diga
O que é con e pro de cada método e qual método é melhor / correto?Devo usarclearTimeOut()
ouclearInterval()
?Referências
http://javascript.info/tutorial/settimeout-setintervalChamando uma função a cada 60 segundoshttp://www.electrictoolbox.com/using-settimeout-javascript/