Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

447
Vistas
Cómo aplanar una matriz de observables en un observable

Estoy tratando de aplanar un Observable anidado, pero no consigo que funcione:

 this.af.object('test/father') .map(res => { res.namedKeys = []; for (let el in res.keys) { res.namedKeys.push(this.af.object(`test/keys/${el}`)) } return res }) .flatMap(res => Observable.combineLatest(res)) .subscribe(res => { console.log('The final response:', res); });

Quiero obtener los datos reales de los Observables en mi matriz. Probé muchas cosas diferentes en los últimos 2 días, pero al final, no recibo nada o sigo recibiendo el Array con Observables. El código anterior no devuelve nada.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Es bastante difícil ver cuál es el problema, ya que no proporciona ninguna información de estructura.

Creo que quieres decir:

 for (let el in Object.keys(res))

en vez de

 for (let el in res.keys)

Además, combineLatest espera un observable. no proporcionaste uno:

Considere usar esto en su lugar:

 .flatMap(res => Rx.Observable.combineLatest(Rx.Observable.of(res)))

Demostración (que usa rxjs 5 que usa switchmap en lugar de flatMap)
http://jsbin.com/cuvisecipi/1/edit?html,js,consola,salida

Una mejor demostración que ilustra una solución similar (de una matriz):

http://jsbin.com/punoxitino/1/edit?html,js,consola,salida

over 4 years ago · Santiago Trujillo Denunciar

0

El operador .combineLatest funcionaría pero espera una matriz de Observables. Le está pasando un objeto res que contiene una propiedad con una matriz de Observables.

En otras palabras, .combineLatest necesita esto: Observable[]
Pero lo estás pasando: { namedKeys: Observable[] }

Entonces, su problema no es simplemente aplanar los Observables (como este, por ejemplo, combinar múltiples matrices observables en una nueva matriz de objetos ) porque también necesita pasar los objetos originales. Recomiendo usar forkJoin porque recopila todos los elementos de todos los Observables de origen hasta que se completan.

 this.af.object('test/father') .concatMap(res => { // the original object is here as well at index 0 observables = [ Observable.of(res) ]; for (let el in res.keys) { observables.push(this.af.object(`test/keys/${el}`)) } return Observable.forkJoin(observables); }) .map(([res, ...namedKeys]) => { res.namedKeys = namedKeys; return res; }) .subscribe(res => { ... });
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda