Diese Antwort bezieht sich auf RxJS 5:
this.http
.get()
.map()
.publishReplay(1)
.refCount();
Wenn die Quelle eine Quelle ist, die abgeschlossen ist (:
Eine Möglichkeit publishReplay
wäre die Verwendung Das wäre typisch für einen Restanruf, da es nach Erhalt einer Antwort abgeschlossen wird. Sie könnten auchverwenden:
this.http
.get()
.map()
.publishLast()
.refCount();
Und ein dritter Weg wäre die Verwendung eines externen BehaviorSubject
oder ein ReplaySubject
(die Ihnen die Flexibilität gibt):
public myData$: BehaviorSubject<any> = new BehaviorSubject(null); // initial value is "null"
public requestData(): BehaviorSubject<any> {
this.http
.get()
.map()
.do(data => this.myData$.next(data))
.subscribe();
return this.myData$.skip(1); // the returned subject skips 1, because this would be the current value - of course the skip is optional and depends on the implementation of the requesting component
}
In Ihrer Komponente (n) können Sie Die Daten werden über myData$.subscribe(...)
abgerufen, um die aktuell "zwischengespeicherten" Daten zu erhalten, oder über requestData().subscribe(...)
für die neuesten Daten.