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 zeigt zip
(beachten Sie auch in rxjs6, wie zip jetzt mit "rxjs" und nicht als Operator importiert wird).
import { zip } from "rxjs";
const the_weather = new Promise(resolve => {
setTimeout(() => {
resolve({ temp: 29, conditions: "Sunny with Clouds" });
}, 2000);
});
const the_tweets = new Promise(resolve => {
setTimeout(() => {
resolve(["I like cake", "BBQ is good too!"]);
}, 500);
});
// Using RxJs
let source$ = zip(the_weather, the_tweets);
source$.subscribe(([weatherInfo, tweetInfo]) =>
console.log(weatherInfo, tweetInfo)
);
// Using ES6 Promises
Promise.all([the_weather, the_tweets]).then(responses => {
const [weatherInfo, tweetInfo] = responses;
console.log(weatherInfo, tweetInfo);
});
Die Ausgabe von beiden ist gleich. Wenn Sie die oben genannten Schritte ausführen, erhalten Sie:
{ temp: 29, conditions: 'Sunny with Clouds' } [ 'I like cake', 'BBQ is good too!' ]
{ temp: 29, conditions: 'Sunny with Clouds' } [ 'I like cake', 'BBQ is good too!' ]