Junior — Middle
Hogyan lehet egyszerre két hálózati kérést indítani korutinok segítségével, és összekapcsolni a válaszaikat?
sobes.tech MI
Válasz az MI-től
Androidban a korutinok segítségével két hálózati kérés egyidejű indításához használhatja az async funkciót egy korutinon belül, majd az eredményeket az await segítségével egyesítheti. Kotlin példakód:
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 {
// az első kérés megvalósítása
}
suspend fun networkRequest2(): Response2 {
// a második kérés megvalósítása
}
Így mindkét kérés párhuzamosan indul, és az eredmények a befejezésük után kerülnek összegzésre.