setTimeOut ()или setInterval (). 4 способа применить одно и то же. что лучше?

Я показываю часы обратного отсчета по отношению к заданному времени окончания.

хотя он работает отлично, но я хочу знать, какие методы лучше всего применять.

ниже моя функция обратного отсчета.

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

я хочу, чтобы функция (обратный отсчет )вызывалась автоматически через каждую 1 секунду , и если она не выполняется/не завершается в течение 1 секунды, отмените текущий ajax и запустите новый вызов ajax.

теперь я обнаружил, что существует 4 метода работы

метод 1 :с использованием setInterval ()с окном объект

window.setInterval(countdown, 1000);

метод 2 :с использованием setInterval()самостоятельно

setInterval(function() {countdown()}, 1000);

метод 3 :с использованием setTimeOut внутри функции вызов другой функции для инициализации основной функции

var countdown = function() { 
     $.ajax({ //ajax code });
     timerId = setTimeout(countdown, 5000); // assign to a variable
 }

function clockStart() {  
        if (timerId) return
        countdown();
}
clockStart(); // calling this function 

метод 4 :с использованием анонимного вызова функции

var countdown = function() { 
     $.ajax({ //ajax code });
     timerId = setTimeout(countdown, 5000);
 }
  (function(){
         if (timerId) return;
         countdown();
})();

Подскажите пожалуйста

  • Каковы недостатки и преимущества каждого метода и какой из них лучший/правильный метод?
  • Должен ли я использовать clearTimeOut()или clearInterval()?

Ссылки

http://javascript.info/tutorial/settimeout-setinterval

Вызов функции каждые 60 секунд

http://www.electrictoolbox.com/using-settimeout-javascript/

5
задан Community 23 May 2017 в 11:56
поделиться