我的应用中有多个倒计时器,我正在使用setInterval函数更新这些值。遵循代码块的想法是循环所有正在进行的游戏并更新倒计时时钟。我有1000毫秒的间隔,但它比这更快地循环。为什么?当我打开多个浏览器窗口以查看倒数计时器更新时,我可以注意到间隔是500毫秒。
if (Meteor.isClient) {
Meteor.setInterval(
function() {
var going = Games.find({isGoing: true});
var goingFetch = going.fetch();
var goingCount = going.count();
for (i = 0; i < goingCount; i++) {
Games.update(goingFetch[i]._id, {$set: {timeLeft: goingFetch[i].timeLeft - 1}});
}
}
, 1000 );
}
有没有更好的方法来解决这个问题?我可能同时拥有100个游戏,每个游戏都有一个到多个计时器。定时器类型可以是倒计时或增量,所有定时器都可以停止。间隔总是并且在所有情况下都是1000毫秒。
UPDATE 我做了更多测试,setInterval工作正常,但客户端仍然有太快的倒数计时器。
答案 0 :(得分:0)
你确定你的代码没有被错误执行两次吗?例如,goingCount
会产生正确的结果吗? setInterval
并不像setTimeout
那样精确,但它不应该在1000毫秒时造成问题。我们能看到更多你的代码吗?