Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

354
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda