Si encuentras alguna incompatibilidad con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al proyecto final.
Solución:
El problema es que convertimos observables en diferentes tipos… con .subscribe
– mientras que no deberíamos (no vuelve observable)
public makeRequest = (): Observable =>
return this.myObservable().subscribe(
... // this is wrong, we cannot return .subscribe
// because it consumes observable and returns ISusbcriber
);
Cuando tenemos un observable… deberíamos simplemente tomar su resultado y usar .map para convertirlo en otra cosa
FlatMap
operadortransformar los elementos emitidos por un Observable en Observables, luego aplanar las emisiones de esos en un solo Observable
public makeRequest = (): Observable => {
return this.myObservable()
.flatmap((x) => return this.http
.get('http://jsonplaceholder.typicode.com/posts/1')
.map( (responseData) =>
return responseData.json();
)
...
Consulta todos los detalles aquí
APROVECHANDO LOS OBSERVABLES EN ANGULAR 2
Si bien flatMap() puede funcionar, ya que no está pasando un parámetro que se usa[see param (x)]el mejor operador para usar en este escenario es forkJoin().
Consulte este ejemplo: https://stackoverflow.com/a/38049268/1742393
Observable.forkJoin(
this.http.get('/app/books.json').map((res:Response) => res.json()),
this.http.get('/app/movies.json').map((res:Response) => res.json())
).subscribe(
data =>
this.books = data[0]
this.movies = data[1]
,
err => console.error(err)
);
Calificaciones y comentarios
Te invitamos a asistir nuestro cometido escribiendo un comentario y puntuándolo te estamos eternamente agradecidos.