Angular 角度4 RXJS可观测。间隔()不';我不在后台工作

Angular 角度4 RXJS可观测。间隔()不';我不在后台工作,angular,rxjs,observable,Angular,Rxjs,Observable,我有一个简单的计时器,可以在我的应用程序中启动计时器时订阅。它工作正常,但如果选择了另一个浏览器选项卡,则计时器将停止,直到再次选择应用程序的选项卡 public timer = Observable .interval(100) 当标签在后台时,有没有一种方法可以让可观察对象保持运行 更新 作为一名网络工作者,我曾简要地研究过如何运行这个项目,但很快就开始阅读关于将网络工作者集成到项目中的困难 因此,目前我正在使用一个简单的解决方案,即获取计时器的开始时间,然后从当前时间中减去该时间,以

我有一个简单的计时器,可以在我的应用程序中启动计时器时订阅。它工作正常,但如果选择了另一个浏览器选项卡,则计时器将停止,直到再次选择应用程序的选项卡

public timer = Observable
  .interval(100)
当标签在后台时,有没有一种方法可以让可观察对象保持运行

更新

作为一名网络工作者,我曾简要地研究过如何运行这个项目,但很快就开始阅读关于将网络工作者集成到项目中的困难

因此,目前我正在使用一个简单的解决方案,即获取计时器的开始时间,然后从当前时间中减去该时间,以获得计时器运行的持续时间。这样,当选项卡再次激活时,计时器将自动更正


我确实希望页面标题显示计时器计数,以便只需查看选项卡即可看到,因此我仍然希望找到更好的解决方案。

看起来不是这样,这是可行的

let j=0;
Rx.Observable.interval(1000).subscribe((v)=>{
  console.info('j: '+j++);})
检查这里的工作演示:


也可以在这里查看:

Chrome背景中的选项卡在性能方面受到严格限制。请参阅Chrome团队的这篇博文:

在Chrome57中,基于预算的计时器节流是一个进一步的解决方案 延长计时器对齐机制,放置额外的 限制后台计时器CPU的使用。其运作如下:

  • 每个后台选项卡都有一个在后台运行计时器的时间预算(以秒为单位)
  • 页面在后台10秒后会受到时间预算限制
  • 仅当时间预算为非负时,才允许运行计时器任务
  • 计时器执行后,其运行时间将从预算中减去
  • 预算会随时间不断重新生成(当前设置为每秒0.01秒)。请注意,此预算更新 当Chrome收集更多关于节流的数据时,可以调整速率 行为

因此,在后台每100毫秒运行一次计时器不会因为cpu周期的预算限制而显著降低工作速度。

.timeInterval();这是必要的吗???相关:感谢github链接。你的jsbin比我自己的应用程序工作得更好,但它仍然比它应该做的慢25%。我使用的是Chrome 62.0.3202。94@RunnyYolk-我对较慢的执行速度不太确定,但我认为你们可以在github上提问,他们可以为你们提供答案,我现在也在学习这方面的知识