涉及计时器的非活动选项卡节流见解

问题描述 投票:0回答:1

我正在构建一个网络应用程序,其中我们定义了会话长度,当用户超过长度时,我们必须向用户显示超时弹出窗口。

目前我有一个定期计时器,它每秒运行一次,检查会话的剩余时间,当它达到所需的值时,就会执行回调。然而,最近了解了非活动选项卡限制场景,其中计时器的运行是不确定的,并且可能根本无法在后台运行选项卡。

问题:一旦窗口重新获得焦点,计时器会再次运行还是一旦挂起,计时器就不会再次恢复?

如果计时器再次运行,它会从什么时间开始运行?当选项卡位于后台时,滴答事件是否缓冲在队列中或根本不抛出。

任何相关文档都会非常有帮助。

我尝试以各种方式重现这一点,但结果是不确定的。

javascript dart angular-dart
1个回答
0
投票

setTimeout
setInterval
在非活动选项卡中受到限制,但在激活选项卡时恢复正常。使用日期来查找超时:

const start = new Date, today = new Date;
today.setHours(0, 0, 0, 0);

const timer = () => setTimeout(() => {
  if(new Date - start > 10000){
    console.log('timeout!');
    return;
  }
  timer();
}, 1000);

timer();
console.log('started');

© www.soinside.com 2019 - 2024. All rights reserved.