2017-02-20 3 views

Antwort

2

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.

Verwandte Themen