setInterval不会每秒运行一次

时间:2019-01-15 17:11:00

标签: javascript react-native setinterval

我在下面的方法中将setInterval与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!

反正我可以确保它每秒运行一次吗?

// UPDATE
其根本原因是我们有一个对象/值数组,例如:

{ 
    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 :(得分:0)

奇怪的是,这种转变正在造成如此大的差距。这可能是由您使用的组件引起的。

但是从javascript的核心角度来看,即使您找到了造成时间漂移的原因,也无法确定时间不会漂移。