Ich versuche, die Anzahl der unnötigen HTTP-Anrufe in meiner Anwendung zu begrenzen, aber jedes Mal, wenn ich ein Observable abonniere, wird eine Anfrage an den Server gestellt. Gibt es eine Möglichkeit, eine Observable zu abonnieren, ohne eine HTTP-Anforderung auszulösen? Mein beobachtbaren Service sieht wie folgt aus:Angular4 Rxjs Observable Beschränken Backend HTTP-Anfragen
getServices(): Observable<Service[]> {
return this.http.get(this.serviceUrl).map(res => res.json())._catch(err => err);
}
Dann in meiner Komponente abonniere ich, dass beobachtbare wie folgt aus:
this.serviceService.getServices().subscribe(services => this.services = services);
Was ich möchte, ist erreichen, um Daten zu speichern irgendwie auf den Dienst selbst (damit ich diese Daten in der gesamten Anwendung verwenden kann, ohne Anforderungen für jede Komponente separat zu stellen, aber ich würde auch gerne wissen, wann diese Daten von Komponenten empfangen werden (was ich normalerweise per Abonnement mache).
... Nur die Funktion nicht aufrufen, die die Anfrage auslöst? <.
Chrillewoodz
Ich abonniere es, weil ich die gleichen Daten haben möchte, die es zur Verfügung stellt ... für jetzt habe ich einen Workaround erstellt und "this.services" in ein Thema eingefügt und ein Observable aus dem sbuject erstellt. –
Dies ist bereits hier beschrieben: https://stackoverflow.com/documentation/rxjs/8247/common-recipes/26490/caching-http-responses#t=201705280824475411303 – martin