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 objeto
window.setInterval(countdown, 1000);
método 2: usandosetInterval () independentemente
setInterval(function() {countdown()}, 1000);
método 3: usandosetTimeOut dentro da função uma chamada outra função para inicializar a função principal
var 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ônima
var 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/

questionAnswers(3)

yourAnswerToTheQuestion