如何在Angular 2中暂停Observable

时间:2017-02-07 20:26:10

标签: angular rxjs observable

我正在开发我的第一个Angular 2产品。我创建了这个Observable.timer,然后订阅了它。它会轮询服务器以获取数据。

我的问题

如何暂停和取消暂停?

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

2 个答案:

答案 0 :(得分:4)

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

  • 在需要时取消订阅/重新订阅
  • 暂停时
  • .filter()排放
  • 创建一个connectable Observable,以便您可以向所有订阅者暂停/启动排放

答案 1 :(得分:0)

您可以在此处查看:RxJS - pause, upon resume give last paused value

基本上,您使用switchMap运算符来停止计时器发射/重新启动它们,并且暂停器会发出一个布尔值,指示您是要暂停还是重新启动。 如果您不需要最新值,则可以publishReplay替换publish