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