Sobes.tech
Junior — Middle

Ako súčasne spustiť dve sieťové požiadavky pomocou korutín a spojiť ich odpovede?

sobes.tech AI

Odpoveď od AI

Na súčasné spustenie dvoch sieťových požiadaviek pomocou korutín v Android, môžete použiť funkciu async vnútri korutiny a potom spojiť výsledky pomocou await. Príklad v 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 {
    // implementácia prvého požiadavku
}

suspend fun networkRequest2(): Response2 {
    // implementácia druhého požiadavku
}

Týmto spôsobom sú oba požiadavky spustené paralelne a výsledky sú spojené po ich dokončení.