【发布时间】:2019-01-16 01:59:52
【问题描述】:
我在 react-native 中使用 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!
无论如何我可以确保它每秒运行一次吗?
// 更新
其根源在于我们有一个对象/值数组,例如:
{
0: {positionSpace: 0, completed: false },
7: {positionSpace: 7, completed: false },
12: {positionSpace: 8, completed: false },
20: {positionSpace: 14, completed: false },
}
对于上面的每个键值,我们需要移动一个用户/小动画。 IE。在 7 秒,然后是 12 秒,然后是 20 秒,依此类推。
但是,这里的重要说明是计时器可以暂停。 IE。如果用户关闭应用程序(暂停),计时器也会暂停。所以我们不能只setTimeout 为上述每一个,因为不认为这会起作用吗?
【问题讨论】:
-
如果 cpu 负载和 js 引擎的工作负载允许,它大约每秒运行一次。您永远无法保证脚本每秒都会运行,因此如果时间很重要,那么您通常会计算自上次计算以来经过的时间。
-
您能否详细说明您评论的第二部分?
-
取决于你想做什么。如果您需要将它用于动画,则需要以比上一个动画步骤以来的秒数更高的精度计算经过的时间。如果要显示倒计时/经过的计时器,则需要执行其他操作。
-
我会用这里的路线/场景更新问题。
-
更新问题
标签: javascript react-native setinterval