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