Mise à jour de mai 2019 avec RxJs v6
A trouvé les autres réponses utiles, et a souhaité donner un exemple de réponse proposée par Arnaud sur l' zip
usage.
Voici un extrait de code montrant l'équivalence entre Promise.all
et le rxjs zip
(notez aussi, dans rxjs6 comment zip est maintenant importé en utilisant "rxjs" et non en tant qu'opérateur).
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);
});
let source$ = zip(the_weather, the_tweets);
source$.subscribe(([weatherInfo, tweetInfo]) =>
console.log(weatherInfo, tweetInfo)
);
Promise.all([the_weather, the_tweets]).then(responses => {
const [weatherInfo, tweetInfo] = responses;
console.log(weatherInfo, tweetInfo);
});
La sortie des deux est la même. L'exécution de ce qui précède donne:
{ 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!' ]