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

118
Visualizações
Combine una respuesta de API de flujo y no de flujo Kotlin

Actualmente tengo una parte de la lógica de la siguiente manera:

 interface anotherRepository { fun getThings(): Flow<List<String>> }
 interface repository { suspend fun getSomeThings(): AsyncResult<SomeThings> }
 when (val result = repository.getSomeThings()) { is AsyncResult.Success -> { anotherRepository.getThings().collectLatest { // update the state } else -> { } } }

El problema que tengo es que, si repository.getSomeThings se ha activado varias veces antes, se activa anotherRepository.getThings por la cantidad de todos los valores precargados de repository.getSomeThings . Me preguntaba cuál es la forma correcta de usar estos repositorios, uno como función de suspensión, el otro como Flujo juntos. El comportamiento equivalente que es combineLatest{} en Rx.

Gracias.

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Hay un par de maneras de resolver su problema. Una forma es simplemente llamar a repository.getSomeThings() en el bloque collectLatest y almacenar en caché el último resultado:

 var lastResult: AsyncResult<SomeThings>? = null anotherRepository.getThings().collectLatest { if (lastResult == null) { lastResult = repository.getSomeThings() } // use lastResult and List<String> }

Otro enfoque es crear un Flow , que llamará a la función repository.getSomeThings() y combine dos flujos:

 combine( anotherRepository.getThings(), flow {emit(repository.getSomeThings())} ) { result1: List<String>, result2: AsyncResult<SomeThings> -> ... }
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