Sobes.tech
Junior — Middle

Como iniciar duas solicitações de rede simultaneamente usando corrotinas e combinar suas respostas?

sobes.tech IA

Resposta da IA

Para executar duas solicitações de rede simultaneamente usando corrotinas no Android, pode usar a função async dentro de uma corrotina e depois combinar os resultados com await. Exemplo em Kotlin:

import kotlinx.coroutines.*

suspend fun fetchData(): Pair<Response1, Response2> = coroutineScope {
    val deferred1 = async { networkRequest1() }
    val deferred2 = async { networkRequest2() }

    val result1 = deferred1.await()
    val result2 = deferred2.await()

    Pair(result1, result2)
}

suspend fun networkRequest1(): Response1 {
    // implementação da primeira requisição
}

suspend fun networkRequest2(): Response2 {
    // implementação da segunda requisição
}

Dessa forma, ambas as requisições são iniciadas em paralelo, e os resultados são combinados após sua conclusão.