RxJS可观察到。一旦我有参考,如何重新发射

时间:2017-03-17 17:04:55

标签: angular typescript rxjs

我有一个observable的引用,我试图在它第一次发出(或完成?)之后再次触发它。是否有可能使我已经存储的这个参考再发一次?

  this._dashboardsObservable = this._http.get(PGDashService.MODEL_URL)

    .map((response: Response) => {

      this._model = this.parse(response.json());

      return this._model;

    })
    .catch((error: any) => Observable.throw(error || 'Server error'));

2 个答案:

答案 0 :(得分:2)

具体而言,不,观察者的消费者不能强迫观察者重新发射。 observable负责产生自己的值,观察者只是从可观察的值中获取值。

但是,我相信还有其他方法可以达到你想要做的事情。例如,使用BehaviorSubject可以允许您缓存最后发出的值,以便下一个订阅观察者将自动获取发送给它的最后一个值。

您必须更加具体地了解您实际想要实现的目标,以便进一步指导。

答案 1 :(得分:1)

您可以使用publishReplay(n) - 运算符:

this._dashboardsObservable = this._http.get(PGDashService.MODEL_URL)
    .map((response: Response) => this.parse(response.json()))
    .catch((error: any) => Observable.throw(error || 'Server error'))
    .publishReplay(1) // replay the last n (1) emissions
    .refCount();      // and share it between any subscriber