繁体   English   中英

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

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

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

角度组件代码:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM