我将尽力为您翻译。这是一个关于使用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());
});
}
例子:在标签页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
火狐浏览器没有问题。
我认为这种行为是浏览器中后台标签优先级较低的结果,但为什么间隔总是被推迟一秒钟呢?