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

351
Vistas
Cómo transformar Flow<List<Flow<T>>> en Flow<List<T>>

Tengo una consulta de base de datos que devuelve la lista de índices de objetos para un día determinado, es decir:

 getIndexesOfDay(day: Day): Flow<List<String>>

Ahora, necesito escuchar los detalles de cada índice , por ejemplo:

 getDetailsByIndex(index: String): Flow<Details>

Entonces, la pregunta es: ¿cómo puedo lograr esto usando Flows?

Dos limitaciones importantes:

  1. Los cambios en los índices deberían propagarse al flujo final;
  2. Los cambios en cualquier objeto Details también deberían actualizar el flujo.

Lo que ya he probado:

 getIndexesOfDay(todayDay) .map { indexes -> indexes?.map { mIndex-> getDetailsByIndex(mIndex) } }

Pero devuelve un Flow<List<Flow<Details>>> en lugar del Flow<List<Details>> deseado

¡Agradezco cualquier ayuda!

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

0

No he probado esto, pero creo que debería ser posible usando flatMapLatest() y combine() :

 getIndexesOfDay(todayDay) .flatMapLatest { indexes -> combine(indexes.map { getDetailsByIndex(it) }) { it.asList() } }

Para cada nueva lista de índices, invoca getDetailsByIndex() varias veces para adquirir una lista de flujos y luego combina estos flujos en un solo flujo de listas de detalles.

El inconveniente es que cada vez que cambian los índices, descarta todos los objetos Flow<Details> , incluso si existiera un índice en la lista de índices nueva y antigua. Probablemente sería mejor crear algún tipo de caché de flujos detallados para cada índice.

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