ich den folgenden Code haben:mit rxjs Umgang Observablen Logik
Observable.combineLatest(
this.data.getPersonalData(myfilter),
this.peopleService.selectedPerson,
).subscribe(([data, person]) => {
this._data = data;
if (this._data.length) {
this.infoService.getInfo(
person.id
)
.subscribe(res => {
this.handleInfo(res);
});
}
});
Observable.combineLatest(
this.data.getPersonalData(myfilter),
this.sectionService.selectedSection
).subscribe(([data, section]) => {
this.filterbySection(s);
});
Ich versuche, das Szenario zu erklären:
Zuerst haben wir alle personal erhalten von myfilter
gegeben verfügbar. Okey, so jetzt, gegeben selectedPerson
erhalten wir alle Informationen für eine Person, und handleInfo
verbindet diese Informationen für eine Gruppe von Objekten in data
. Aber die Sache ist, wenn es fertig ist, möchte ich filterbySection
, wenn ich eine selectedSection
habe.
Ich weiß, ich this.sectionService.selectedSection
im ersten combineLatest
setzen kann, aber jedes Mal, wenn der Benutzer den Abschnitt, wird es die infoService
ging in die Datenbank laufen und alle Infos zu bringen, ich dieses Verhalten nicht brauchen. Ich muss getInfo
ausführen, wenn ich eine Person auswähle, handle diese Info Zuordnung zu _data
, und dann nach Abschnitt die ganze Sache "info + data" filtern, jedes Mal, wenn der Benutzer auf einen neuen Abschnitt klickt.