2017-02-07 103 views
0

我正在使用我的第一个Angular 2产品。我创建了这个Observable.timer,然后订阅它。它轮询服务器的数据。如何在Angular 2中暂停Observable 2

我的问题

如何暂停及恢复呢?

ngOnInit(): void { 
    this.poll = Observable.timer(500,500).subscribe((t: any) => { 
     this.request.getRackList(+this.global.zoneId).subscribe(
     incoming => this.import(incoming), 
     err => { this.global.err(err) } 
    ); 
    }) 
    this.canOpenClose = (this.global.mode === 2); 
    } 
+0

更换publishReplay替代这里https://github.com/ReactiveX/rxjs/issues/1542描述 – martin

回答

2

有多种方法可以暂停Observable。你可以:需要

  • .filter()向外排放时暂停
  • +0

    太谢谢你了。我住你的第二个想法,但不知道该怎么做。你知道一个好的网站,新手可以学到更多吗? –

    +0

    我真的很喜欢这个讲话https://youtu.be/3LKMwkuK0ZE知识的好地方是http://reactivex.io或http://rxmarbles.com –

    0

    你可以在这里看看:RxJS - pause, upon resume give last paused value

    基本上,你使用switchMap运营商停止计时器发射/重新启动他们和一个pauser主题ect发出布尔值,指示您是要暂停还是重新启动。 如果你不需要最新的值,可以通过publish