JSBIN SamplecombineAll emittiert nicht leeres Array
I einen veränderbaren Satz von untergeordneten Komponenten hat (POJO Objekt), die jeweils ihren eigenen Zustand Strom haben. Jedes Mal, wenn ein Benutzer addChild/removeChild/clearChildren auslöst, wird mit #switchMap eine neue Gruppe von untergeordneten Status-Streams ausgegeben. So weit, ist es gut! (Und so überrascht von RxJS!)
Mit Rx.Observable.from(arrayOfStateStreams).combineAll()
bekomme ich ein gutes Ergebnis, solange die arrayOfStateStreams
kein leeres Array ist.
Da dies ein partieller Zustand ist, der auf einer höheren Ebene (Latest) kombiniert wird, muss ich ein leeres Array emittieren oder der globale Zustandsbaum enthält alte Zustandsdaten, die nicht mehr wahr sind!
Ich kann einige reservierte Token wie ['EMPTY-ARRAY-PLACEHOLDER-TOKEN']
ausgeben, aber das ist nur komisch. Ein besserer Weg wäre, immer einen letzten Strom an das Array anzuhängen, so dass der letzte Index als Müll betrachtet werden kann. Immer noch verwirrender Code und Zustand. Die Verwendung von [null]
ist nicht OK, da wir einen untergeordneten Status 'null'
haben könnten.
Wer kann das auf eine gute Weise lösen? Kann dies nicht unterstützt werden, da nach #combineAll keine andere Darstellung eines leeren Arrays vorhanden sein sollte?
Dies wurde in https://github.com/ReactiveX/rxjs/issues/1910 behoben. –