Der beste Weg, um ein Array innerhalb eines RxJS Observable zu "glätten"

9

Mein Backend gibt häufig Daten als Array innerhalb eines RxJS 5 Observable zurück (ich benutze Angular 2).

Ich finde oft, dass ich die Array-Elemente einzeln mit RxJS-Operatoren bearbeiten möchte, und zwar mit folgendem Code ( JSBin ):

%Vor%

Die mergeMap(val => val) -Linie fühlt sich nicht sehr idiomatisch an.

Gibt es eine bessere Möglichkeit, Transformationen auf die Mitglieder eines Arrays anzuwenden, die von einem Observable ausgegeben werden?

NB. Ich möchte, dass RxJS-Operatoren (gegen Array-Methoden) meine Items transformieren, weil ich die Möglichkeit habe, jedes Item in ein zweites Observable zu projizieren. Typischer Anwendungsfall: Backend-Rückgabe einer Liste von Artikel-IDs, und ich muss alle diese Artikel vom Backend anfordern.

    
AngularChef 27.02.2017, 09:59
quelle

3 Antworten

6

Sie können concatAll() oder mergeAll() ohne Parameter verwenden.

%Vor%

Dies (einschließlich mergeMap ) funktioniert nur in RxJS 5, weil es Observables, Arrays, Array-ähnliche Objekte, Promises usw. auf die gleiche Weise behandelt.

Schließlich könntest du auch:

%Vor%     
martin 27.02.2017, 10:04
quelle
1

Wenn es sich um eine synchrone Operation handelt, würde ich stattdessen vorschlagen, Javascript Array.map zu verwenden, es sollte Ihnen sogar etwas Leistung sparen:

%Vor%     
olsn 27.02.2017 10:06
quelle
0

Wenn du es im Stream brauchst, benutze das einfach:

%Vor%     
Nick Waits 21.02.2018 09:28
quelle

Tags und Links