2015-02-18 3 views
0

У меня есть несколько таймеров обратного отсчета в моем приложении, и я обновляю эти значения с помощью функции setInterval. Идея следующего блока кода - это цикл всех текущих игр и обратный отсчет времени. У меня есть интервал 1000 мс, но он работает намного быстрее, чем это. Зачем? Когда я открываю несколько окон браузера, чтобы видеть обновления таймера обратного отсчета, я могу заметить, что этот интервал составляет примерно 500 мс.Метеор setinterval слишком быстр

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 мс.

ОБНОВЛЕНИЕ Я сделал больше тестов и setInterval работает нормально, но у клиентов все еще есть слишком быстрый таймер обратного отсчета.

ответ

0

Вы уверены, что код не выполнен дважды по ошибке? Например, goingCount дает правильные результаты? setInterval не такой точный, как setTimeout, но он не должен вызывать проблем при 1000 мс. Можем ли мы увидеть больше вашего кода?

+0

Я сделал больше тестов и setInterval отлично работает. Похоже, проблема в другом месте. – anttir

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