setInterval не работает каждую секунду - PullRequest
0 голосов
/ 15 января 2019

Я использую setInterval в Reaction-native, как показано ниже, с TimerMixin.

TimerMixin.setInterval(
  () => {
      console.log('timer running!');
      const seconds = this.gameTimerView.current.returnSeconds();
      console.log(`timer seconds: ${seconds}`);
    },
  1000
);

Я замечаю из журналов, что он не вызывается каждую секунду.

.js:1648 timer seconds: 6
.js:1646 timer running!
.js:1648 timer seconds: 7
.js:1646 timer running!
.js:1648 timer seconds: 8
.js:1646 timer running!
.js:1648 timer seconds: 10
.js:1646 timer running!

Могу ли я в любом случае убедиться, что он запускается каждую секунду?

// ОБНОВЛЕНИЕ
Корень этого в том, что у нас есть объект / массив значений, таких как:

{ 
    0: {positionSpace: 0, completed: false },
    7: {positionSpace: 7, completed: false },
    12: {positionSpace: 8, completed: false },
    20: {positionSpace: 14, completed: false },
}

Для каждого значения ключа в приведенном выше, нам нужно переместить пользовательскую / маленькую анимацию То есть Через 7 секунд, затем 12 секунд, затем 20 секунд и так далее.

Однако здесь важно отметить, что таймер можно поставить на паузу. То есть Если пользователь закрывает приложение (делает паузу), таймер тоже останавливается. Таким образом, мы не можем просто setTimeout для каждого из вышеперечисленных, так как не думаю, что это будет работать?

1 Ответ

0 голосов
/ 15 января 2019

Странно, что сдвиг делает такой большой разрыв. Это может быть вызвано компонентами, которые вы используете.

Но с точки зрения ядра javascript невозможно быть уверенным, что время не смещается - даже если вы найдете причину такого большого смещения времени.

...