In Angular 1.x musste ich manchmal mehrere http
Anfragen stellen und mit allen Antworten etwas anfangen. Ich würde alle Versprechen in ein Array werfen und anrufen Promise.all(promises).then(function (results) {...})
.
Best Practices für Angular 2 scheinen auf die Verwendung von RxJS Observable
als Ersatz für Versprechen in http
Anfragen hinzuweisen . Wenn ich zwei oder mehr verschiedene Observables aus http-Anfragen erstellt habe, gibt es eine Entsprechung zu Promise.all()
?
quelle
Update Mai 2019 mit RxJs v6
Fanden die anderen Antworten nützlich und wollten ein Beispiel für die Antwort von Arnaud zur
zip
Verwendung geben.Hier ist ein Ausschnitt, der die Äquivalenz zwischen
Promise.all
und den rxjs zeigtzip
(beachten Sie auch in rxjs6, wie zip jetzt mit "rxjs" und nicht als Operator importiert wird).Die Ausgabe von beiden ist gleich. Wenn Sie die oben genannten Schritte ausführen, erhalten Sie:
quelle
forkJoin funktioniert auch gut, aber ich würde kombinierenLatest bevorzugen, da Sie sich keine Sorgen machen müssen, dass der letzte Wert von Observablen verwendet wird. Auf diese Weise können Sie einfach aktualisiert werden, wenn einer von ihnen auch einen neuen Wert ausgibt (z. B. wenn Sie ein Intervall oder etwas abrufen).
quelle
Auf reactivex.io zeigt forkJoin tatsächlich auf Zip , was die Arbeit für mich erledigt hat:
quelle
-_-