setTimeOut () lub setInterval (). 4 metody zastosowania tej samej rzeczy. co jest najlepsze?

Wyświetlam zegarek odliczający w odniesieniu do podanego czasu końcowego.

chociaż działa idealnie, ale chcę wiedzieć, które metody najlepiej zastosować.

poniżej jest moja funkcja odliczania.

  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);
               }
            }); 
     }

chcę, aby funkcja (odliczanie) została wywołanaautomatycznie po co 1 sekundę a jeśli nie zostanie wykonane / zakończone w ciągu 1 sekundy, anuluj bieżący ajax i uruchom nowe wywołanie ajax.

teraz znalazłem, że są4 metody pracy

metoda 1: użyciesetInterval () z oknem obiekt
window.setInterval(countdown, 1000);
metoda 2: użyciesetInterval () niezależnie
setInterval(function() {countdown()}, 1000);
metoda 3: użyciesetTimeOut wewnątrz funkcji wywołanie innej funkcji do intializacji głównej funkcji
var countdown = function() { 
     $.ajax({ //ajax code });
     timerId = setTimeout(countdown, 5000); // assign to a variable
 }

function clockStart() {  
        if (timerId) return
        countdown();
}
clockStart(); // calling this function 
metoda 4: użycieanonimowe wywołanie funkcji
var countdown = function() { 
     $.ajax({ //ajax code });
     timerId = setTimeout(countdown, 5000);
 }
  (function(){
         if (timerId) return;
         countdown();
})();

Powiedz mi, Proszę

Co jest zaletą każdej metody i która jest najlepszą / właściwą metodą?Powinienem użyćclearTimeOut() lubclearInterval() ?

Referencje

http://javascript.info/tutorial/settimeout-setintervalWywoływanie funkcji co 60 sekundhttp://www.electrictoolbox.com/using-settimeout-javascript/

questionAnswers(3)

yourAnswerToTheQuestion