Angular rxjs Observable.interval() 在 Chrome 中的背景选项卡上未正确触发

Angular rxjs Observable.interval() not triggering properly on background tabs in Chrome

我正在编写带有通过 RxJs observables 实现的间隔计时器的 angular2 应用程序,并且刚刚注意到 Chrome 浏览器中 Observable.interval() 和 Observable.timer() 的奇怪行为在后台。 Angular 组件应该每秒打印一次控制台中的秒数,但是在后台选项卡上,这没有按预期工作 - 函数每 x+1 秒触发一次,其中 x 是在间隔函数中明确指定的间隔

Angular 组件代码:

ngOnInit() {
  let a = Observable.interval(1000).subscribe(() => {
    let date = new Date();
    console.log(date.getSeconds());
  });
}

示例:tab1 上的控制台输出(具有上述定义的计时器的选项卡):

37 <- tab1 (with timer)
38
39
40
41 <- changed tab to tab2
43
45
47
49
51
53
55
57
59 <- changed tab to tab1
0
1
2
3

Mozzila FF 没有问题。

我推测此行为是浏览器中后台选项卡优先级较低的结果,但为什么间隔总是推迟一秒?

但是,如果使用setInterval(),在任何浏览器中都没有问题。

ngOnInit() {

  setInterval(()=>{

    console.log(new Date())
  },1000)  
}