Ich habe ein Shared-Service (ab this Vorschlag), dass Cache und gibt einige Daten nach der ersten HTTP-Anfrage:Angular 2, in Concurrency Shared Service http beobachtbaren
export class SharedService {
constructor(private http:Http) {
}
getData() {
if (this.cachedData) {
return Observable.of(this.cachedData);
} else {
return this.http.get(...)
.map(res => res.json())
.do((data) => {
this.cachedData = data;
});
}
}
}
Mein Problem ist, dass ich einige Richtlinien haben und Komponenten innerhalb der gleichen Vorlage, die alle zur selben Zeit initialisiert werden und alle gleichzeitig (innerhalb der ngInit-Funktion) die getData-Methode aufrufen (alle vor dem ersten), so dass der Dienst viele HTTP-Anfragen startet und keine zwischengespeicherten Daten zurückgibt . Kann mir jemand vorschlagen, wie man diese Nebenwirkung vermeidet?
Vielen Dank Günter, erwidern die "pending observable" lösen mein Problem. –
Großartig, danke für das Feedback :) –