ReactJS:在后台继续计时器?

时间:2018-01-12 05:12:12

标签: javascript reactjs

我有一个create-react-app,它有一个setInterval,每1000毫秒运行一次tick()函数。 tick()函数将sessionTime状态减1。当浏览器选项卡位于前台但它在后台丢失计数(在一段时间后不计算)时,它可以正常工作。如何让它继续运行?这甚至是React中定时器的正确方法吗?

1 个答案:

答案 0 :(得分:2)

您的time budget可能已用完了?

无论如何,更可靠的方法是不依赖于特定时间的间隔;每次执行勾选时检查当前new Date(),计算自上次滴答以来或自某个记住的开始时间(或剩余到某个目标时间)以来经过的时间,并采取相应的行动。

例如,如果您希望会话在30分钟后过期,

let now = new Date();
const second = 1000;
const minute = 30 * second;
let expiryTime = new Date(now.getTime() + 30 * minute);

然后在你的勾号中检查是否new Date() > expiryTime。这样,你的蜱常规运行的频率并不重要。