我有一个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'));
答案 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