Sobes.tech
Junior — Middle

Как да реализираме функция, която едновременно зарежда данни от два различни източника асинхронно?

sobes.tech AI

Отговор от AI

За асинхронно зареждане на данни от две различни източници в Android можете да използвате Kotlin Coroutines. Това ще позволи да се стартират две операции паралелно и да се изчака тяхното завършване.

Пример:

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) {
            // Обработка на резултатите на главния поток
            println("Резултат 1: $result1")
            println("Резултат 2: $result2")
        }
    }
}

suspend fun loadFromSource1(): String {
    // Имитация на зареждане на данни
    delay(1000)
    return "Данни от източник 1"
}

suspend fun loadFromSource2(): String {
    // Имитация на зареждане на данни
    delay(1500)
    return "Данни от източник 2"
}

В този пример две функции за зареждане се стартират паралелно, а резултатите се обработват след тяхното завършване.