Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

340
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!