Sobes.tech
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.