Ich Observablen in ein Array wie solche drängen ...RXJS für alle Observablen in einem Array Warten Sie abzuschließen (oder Fehler)
var tasks$ = [];
tasks$.push(Observable.timer(1000));
tasks$.push(Observable.timer(3000));
tasks$.push(Observable.timer(10000));
Ich möchte eine beobachtbare dass aussendet, wenn alle Aufgaben abgeschlossen $. Denken Sie daran, dass Aufgaben in der Praxis keine bekannte Anzahl von Observablen haben.
Ich habe versucht Observable.zip(tasks$).subscribe()
, aber das scheint zu scheitern, wenn es nur 1 Aufgabe gibt, und führt mich zu der Annahme, dass ZIP eine gerade Anzahl von Elementen erfordert, um so zu arbeiten, wie ich es erwarten würde.
Ich habe versucht, Observable.concat(tasks$).subscribe()
, aber das Ergebnis der concat-Operator scheint nur eine Reihe von Observablen ... z. im Grunde das gleiche wie die Eingabe. Sie können nicht einmal bei ihm abonnieren.
in C# wäre dies Task.WhenAll() ähnlich. in ES6 versprechen es wäre Promise.all().
Ich bin auf eine Reihe von SO Fragen gestoßen, aber sie alle scheinen sich damit zu befassen, auf eine bekannte Anzahl von Streams zu warten (z. B. sie zusammen zu kartieren).
Dies hängt davon ab, was Sie tun möchten, wenn eines der Observables eine Fehlermeldung sendet. Möchten Sie den Fehler einfach ignorieren oder bedeutet dies, dass das gesamte Ergebnis verworfen wird und Sie nur den Fehler erhalten. – martin