Sobes.tech
Junior — Middle

Kaip įgyvendinti funkciją, kuri vienu metu asinchroniškai įkelia du skirtingus šaltinius?

sobes.tech AI

Atsakymas iš AI

Norint asinchroniškai įkelti duomenis iš dviejų skirtingų šaltinių Android platformoje, galite naudoti Kotlin Coroutines. Tai leis vykdyti dvi operacijas paraleliai ir laukti jų užbaigimo.

Pavyzdys:

import kotlinx.coroutines.*

fun loadData() {
    CoroutineScope(Dispatchers.IO).launch {
        val deferred1 = async { loadFromSource1() }
        val deferred2 = async { loadFromSource2() }

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

        withContext(Dispatchers.Main) {
            // Rezultatų apdorojimas pagrindiniame sraute
            println("Rezultatas 1: $result1")
            println("Rezultatas 2: $result2")
        }
    }
}

suspend fun loadFromSource1(): String {
    // Duomenų įkėlimo simuliacija
    delay(1000)
    return "Šaltinio 1 duomenys"
}

suspend fun loadFromSource2(): String {
    // Duomenų įkėlimo simuliacija
    delay(1500)
    return "Šaltinio 2 duomenys"
}

Šiame pavyzdyje dvi įkėlimo funkcijos vykdomos paraleliai, o jų rezultatai apdorojami po jų užbaigimo.