Im Arbeiten mit Observablen und dem Operator flatMap habe ich eine Methode geschrieben, die eine Observable mit einem Array von Objekten aufrufen und zurückgeben kann. Was ich eigentlich brauche, ist, diese Anordnung von Objekten zu erhalten und jedes Objekt zu verarbeiten. Nachdem alle Elemente verarbeitet sind, möchte ich das Ergebnis verketten, um einen zusätzlichen API-Aufruf mit einer anderen Methode, die ich geschrieben habe, zu machen. Der folgende Code tut, was ich brauche:Verketten von Observablen mit flatMap
this.apiService.getInformation('api-query', null).first().flatMap((apiData) => {
return apiData;
}).subscribe((dataObject) => {
this.processService.processFirstCall(dataObject);
}, null,() => {
this.apiService.getInformation('another-query', null).first().subscribe((anotherQueryData) => {
this.processService.processSecondCall(anotherQueryData);
});
});
Aber dieser Ansatz ist nicht optimal aus meiner Sicht, würde Ich mag Kette tun, diese Anrufe flatMap verwenden, aber wenn ich folgendes tun
this.apiService.getInformation('api-query', null).first().flatMap((apiData) => {
return apiData;
}).flatMap((dataObject) => {
this.processService.processFirstCall(dataObject);
return [dataObject];
}).flatMap((value) => {
return this.apiService.getInformation('another-api-query', null).first();
}).subscribe((value) => {
this.processService.processSecondCall(value);
});
Die Der zweite API-Aufruf wird für jedes Element im apiData-Array von Objekten einmal ausgeführt. Ich weiß, dass ich vermisse oder etwas falsch verstehe. Aber von der zweiten Antwort dieses Threads Why do we need to use flatMap? Ich denke, dass die zweite FlatMap die verarbeiteten apiData zurückgegeben werden soll, stattdessen gibt jedes der Objektelemente auf diesem Array zurück. Ich würde die Hilfe zu schätzen wissen.
Vielen Dank.