2016-02-22 2 views
0

Я пытаюсь создать обратный вызов для моего веб-API для сбора новых данных гонки, я создал setInterval и протестировал его, чтобы проверить, если он регистрируется на консоли один раз, как Я бы ожидал, но по какой-то причине консоль регистрируется дважды. Я не понимаю, почему.Функция/setInterval неожиданно регистрируется дважды в консоли

Я хочу удалить console.log() внутри оператора if и заменить его вызовом на сервер, но если он дважды регистрируется, я получу в два раза больше информации.

var TimeOutID = ''; 

var TenRaces = 0; 

var StartThis = function() { 
    console.log("Starting run"); 

    //Simulate counting down to next race 
    TimeOut = new Date().getTime() + 5000; 

    $('#next').countdown(TimeOut, function (event) { 
     $(this).html(event.strftime('%H:%M:%S')); 
     if(event.elapsed) { 
      //once the countdown timer has elapsed fetch data 
      console.log("Race: " + TenRaces); // <-- this one is logged twice 
     } 
    }); 

    //loop ten races simulating ten different times data is needed 
    TenRaces++; 
    if (TenRaces > 10) { 
     clearInterval(TimeOutID); 
    } 

}; 

TimeOutID = setInterval(StartThis, 6000);  

Почему console.log() работает и регистрируется дважды?

Я использую плагин JQuery из http://hilios.github.io/jQuery.countdown/

+0

Это просто дважды или, 1, 2, 3 .... каждый раз ?? – RRK

+0

Он всегда регистрируется дважды в каждом цикле –

+0

У вас есть две 'console.log' в вашей функции 'StartThis', которая работает дважды? –

ответ

0

Согласно документации, истекшее режим намеренно предназначен для продолжения после окончания отсчета. Поэтому я думаю, что это цикл дважды, прежде чем TenRaces var iterates. Он просто будет вести ведение журнала навсегда, если вы не повторите этот var.

Сделайте данные журнала/выборки на мероприятии finish.countdown, это срабатывает только один раз, когда обратный отсчет заканчивается. Смотрите документацию:

countdown documentation

Э.Г.

$('div#clock').countdown(finalDate) 
.on('finish.countdown', callback); 
+0

У этого был еще более странный результат, он теперь выходит один раз на гонку 1, два раза бреши в гонке два, три раза за гонку три и т. Д. '$ (' # next '). Countdown (TimeOut) .on ('finish.countdown', function() { console.log ("Race:" + TenRaces); }); ' –

Смежные вопросы