【问题标题】:How to pause Observable?如何暂停 Observable?
【发布时间】:2017-02-07 20:26:09
【问题描述】:

我正在开发我的第一个 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);
  }

【问题讨论】:

标签: rxjs observable


【解决方案1】:

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

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

【讨论】:

【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 2019-03-06
    • 2018-03-17
    • 2021-02-03
    • 2011-06-25
    • 2016-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多