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)
}
我正在编写带有通过 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)
}