【发布时间】:2018-01-03 05:05:31
【问题描述】:
我正在编写Angular2应用程序,间隔定时器通过RXJS可观察到实现,并且刚刚注意到观察到的奇怪行为。当标签在后台时,Chrome浏览器中的Interval()和Angeenable.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 没有问题。
我推测这种行为是浏览器中后台标签优先级较低的结果,但为什么间隔总是延迟一秒?
【问题讨论】:
标签: angular timer rxjs observable angular2-observables