我在下面的方法中将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
,因为认为这行不通吗?
答案 0 :(得分:0)
奇怪的是,这种转变正在造成如此大的差距。这可能是由您使用的组件引起的。
但是从javascript的核心角度来看,即使您找到了造成时间漂移的原因,也无法确定时间不会漂移。