Javascript 函数/setInterval意外地记录两次到控制台

Javascript 函数/setInterval意外地记录两次到控制台,javascript,jquery,Javascript,Jquery,我试图创建一个对我的Web API的回调来收集新的比赛数据,我创建了一个setInterval,并测试它,看看它是否像我预期的那样记录到控制台一次,但由于某种原因,控制台记录了两次。我不明白为什么 我想删除if语句中的console.log(),并将其替换为对服务器的调用,但如果它记录两次,我将收到两倍的信息 var TimeOutID = ''; var TenRaces = 0; var StartThis = function () { console.log("Startin

我试图创建一个对我的Web API的回调来收集新的比赛数据,我创建了一个
setInterval
,并测试它,看看它是否像我预期的那样记录到控制台一次,但由于某种原因,控制台记录了两次。我不明白为什么

我想删除if语句中的
console.log()
,并将其替换为对服务器的调用,但如果它记录两次,我将收到两倍的信息

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);    
var TimeOutID='';
var=0;
var starttthis=函数(){
console.log(“开始运行”);
//模拟倒计时到下一场比赛
超时=新日期().getTime()+5000;
$(“#下一步”)。倒计时(超时,函数(事件){
$(this.html(event.strftime(“%H:%M:%S”);
如果(事件已过){
//一旦倒计时结束,获取数据
log(“Race:+TenRaces);//10){
清除间隔(超时ID);
}
};
TimeOutID=设置间隔(起始时间,6000);
为什么
console.log()
会运行并记录两次


根据文档,我使用的是来自

的jQuery插件,经过的模式被故意设计为在倒计时结束后继续。因此,我认为它在TenRaces变量迭代之前循环了两次。如果不迭代该变量,它将永远保持日志记录

改为在finish.countdown事件上记录/获取数据,当倒计时结束时,只会触发一次。请参阅文档:

例如


根据文档,经过的模式故意设计为在倒计时结束后继续。因此,我认为它在TenRaces变量迭代之前循环两次。如果不迭代该变量,它将永远保持日志记录

改为在finish.countdown事件上记录/获取数据,当倒计时结束时,只会触发一次。请参阅文档:

例如


它只是两次还是,1,2,3…每次??它总是在每个循环上记录两次您有两个
控制台。在
启动中记录
这个
函数,哪个运行了两次?@Yoshi-在您向我展示之前,我很确定!:P@AdrianLynch已锁定。计时器运行后,将触发一个名为“finish”的事件,最后一个事件为“finish”stoped“(用那种方式拼写)。所以我所做的就是听完成事件,现在它已经解决了。很多人感谢它只是两次或者,1,2,3…每次??它总是在每个循环上记录两次你有两个
控制台。在你的
启动中记录
这个
函数,哪一个运行了两次?@Yoshi-在你给我看之前我很确定!:P@AdrianLynch钉住它。计时器运行后,它会触发一个名为“finish”的事件,最后一个事件“Stopped”(按这种方式拼写)。因此,我所做的就是听finish事件,现在它已经解决了它。许多感谢有了一个更奇怪的结果,它现在在第1场比赛中注销一次,在第2场比赛中注销两次,在第3场比赛中注销三次等等。$(“#下一步”)。倒计时(TimeOut).on('finish.countdown',function(){console.log('Race:+TenRaces);});“这是一个更奇怪的结果,它现在为Race 1注销一次,为Race 2注销两次,为Race 3注销三次等等…”('#next')。倒计时(TimeOut).on('finish.countdown',function(){console.log(“Race:+TenRaces);});'
$('div#clock').countdown(finalDate)
.on('finish.countdown', callback);