ventajas tutorial reactiva react qué que programacion para ejemplo dias desventajas curso con javascript angularjs rxjs observable
Observable.zip()

javascript - tutorial - ¿Promise.todo comportamiento con RxJS Observables?



rxjs que es (4)

En reactivex.io forkJoin en realidad apunta a Observable.zip() , que hizo el trabajo por mí:

let subscription = Observable.zip(obs1, obs2, ...).subscribe(...);

En Angular 1.x a veces necesito hacer múltiples solicitudes http y hacer algo con todas las respuestas. Promise.all(promises).then(function (results) {...}) todas las promesas en una matriz y llamaría a Promise.all(promises).then(function (results) {...}) .

Las mejores prácticas de Angular 2 parecen apuntar hacia el uso del Observable de RxJS como un reemplazo de las promesas en las solicitudes http . Si tengo dos o más Observables diferentes creados a partir de solicitudes http, ¿es equivalente a Promise.all() ?



forkJoin también funciona bien, pero prefiero combineLatest ya que no tiene que preocuparse de que tome el último valor de observables. De esta manera, puede actualizarse siempre que alguno de ellos emita un nuevo valor también (p. Ej., Busque un intervalo o algo así).


Actualización de mayo de 2019 con RxJs v6

Encontré útiles las otras respuestas y deseaba ofrecer un ejemplo de la respuesta ofrecida por Arnaud sobre zip uso de zip .

Aquí hay un fragmento que muestra la equivalencia entre Promise.all y el zip rxjs (tenga en cuenta también, en rxjs6 cómo zip se importa ahora usando "rxjs" y no como operador).

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); });

La salida de ambos es la misma. Ejecutar lo anterior da:

{ 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!'' ]