Verificamos exhaustivamente cada uno de los escritos de nuestra web con el objetivo de enseñarte en todo momento información veraz y actual.
Solución:
Como se menciona en los comentarios, usted está buscando el flatMap
operador.
Puede encontrar más detalles en las respuestas anteriores:
- Cómo hacer la secuencia de la cadena en rxjs
- ¿Por qué necesitamos usar flatMap?
Su ejemplo se leería como:
this.returnsObservable1(...)
.flatMap(success => this.returnsObservable2(...))
.flatMap(success => this.returnsObservable3(...))
.subscribe(success => (...));
Anteriormente respondí para RxJS 5, terminé en esta página mientras usaba 6.
En el caso de que también esté en 6 (y creo que ya debería estarlo), puede usar flatmap
como operador dentro pipe
.
Modificó el código de ejemplo de @user3743222:
this.returnsObservable1(...)
.pipe(
flatMap(success => this.returnsObservable2(...)),
flatMap(success => this.returnsObservable3(...))
)
.subscribe(success => (...));
El operador switchMap también puede ser útil. Aquí se pueden encontrar algunos ejemplos que describen la utilidad de switchMap en comparación con las suscripciones anidadas:
- situación con suscripciones anidadas
Este codepen ofrece una demostración: https://codepen.io/anon/pen/zdXBvP?editors=1111
Rx.Observable
.interval(5000)
.subscribe((val) =>
console.log("outer:", val);
Rx.Observable
.interval(1000)
.subscribe((ival) =>
console.log("inner:", val, ival);
);
);
- situación con switchMap
Este codepen ofrece una demostración: https://codepen.io/anon/pen/xLeOZW?editors=1111
Rx.Observable
.interval(5000)
.switchMap((val) =>
console.log("outer:", val);
return Rx.Observable.interval(1000).map((ival) => [val, ival]);
)
.subscribe((val) =>
console.log("inner:", val[0], val[1]);
);
Si piensas que ha sido de utilidad nuestro post, nos gustaría que lo compartas con otros seniors así contrubuyes a difundir nuestro contenido.