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



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

角度组件代码:

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

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

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)  
}

最新更新