Nach diesem Kurs https://www.pluralsight.com/courses/angular-2-getting-started und Github Materialien product.service in diesem Kurs versuchen, vermeiden, http.get() Anfrage jedes Mal, wenn ich auf den Link klicken aufrufen. Ich denke, es ist eine große Verschwendung, Datei jedes Mal zu laden, anstatt es als ein Objekt im Speicher zu speichern.Wie cache und teile ich Http get() Antwort?
Der Versuch, diesen Code zu ersetzen:
getProducts(): Observable<IProduct[]> {
return this._http.get(this._productUrl)
.map((response: Response) => <IProduct[]> response.json())
.do(data => console.log('All: ' + JSON.stringify(data)))
.catch(this.handleError);
}
mit dieser:
public _observable: Observable<IProduct[]>;
getProducts(): Observable<IProduct[]> {
console.log('_observable before: ' + (this._observable));
if(this._observable===undefined){
console.log('_observable inside 1: ' + (this._observable));
this._observable=this._http.get(this._productUrl)
.map((response: Response) => <IProduct[]> response.json())
.do(data => console.log('All inside observable: ' + JSON.stringify(data)))
.catch(this.handleError);
console.log('_observable inside 2: ' + (this._observable));
}
console.log('_observable after: ' + (this._observable));
return this._observable;
}
diese Linie nie, wenn this._observable
underfined ist this._observable=this._http.get(this._productUrl)
ABER ES NENNT aufgerufen werden soll !!! !
In einer Chromkonsole:
_observable before: [object Object]
product.service.ts:25 _observable after: [object Object]
product.service.ts:20 All inside observable:...
Letzte Zeile erscheinen soll nicht!
Ist der ProductListComponent auf die beobachtbaren abonnieren wieder? Wenn dies der Fall ist, wird es erneut ausgeführt. – DeborahK
Schauen Sie sich die hier vorgestellten Lösungen an: http://stackoverflow.com/questions/36271899/what-is-the-correct-way-to-share-the-result-of-an-angular-2-http-network- call-in – DeborahK
tatsächlich, führte Sie mich in die richtige Richtung es geht um Zwischenspeichern und Hinzufügen magischer Wörter publishReplay (1) und refCount http://www.syntaxsuccess.com/viewarticle/caching-with-rxjs-observables-in -angular-2.0 Wenn Sie die Antwort posten, werde ich es als Antwort markieren – Ivanesses