Sobes.tech
Junior — Middle

Felsorolnád és leírnád a láncépítési mintákat a korutinokban?

sobes.tech MI

Válasz az MI-től

Android (Kotlin) korutinokban gyakran használnak az alábbi mintákat láncok építéséhez:

  • Szekvenciális végrehajtás (Szekvenciális láncolás): a korutinok egymás után hívódnak, ahol az előző eredményét a következőben használják.

  • Párhuzamos végrehajtás eredménygyűjtéssel (Párhuzamos összegzés): több korutin indítása párhuzamosan az async segítségével, majd az eredmények összegyűjtése az await segítségével.

  • Hiba kezelése a láncban (Hiba kezelés): try/catch használata a korutinok belsejében az egyes lépésekben fellépő kivételek kezelésére.

  • Adatfolyamok átalakítása (Flow láncolás): Flow használata reaktív láncok építéséhez map, filter, flatMap stb. operátorokkal.

Példa szekvenciális láncra:

suspend fun fetchData(): Data = ...
suspend fun processData(data: Data): ProcessedData = ...
suspend fun saveData(processedData: ProcessedData) = ...

suspend fun chain() {
    val data = fetchData()
    val processed = processData(data)
    saveData(processed)
}

Példa párhuzamos láncra:

coroutineScope {
    val deferred1 = async { fetchData1() }
    val deferred2 = async { fetchData2() }
    val result1 = deferred1.await()
    val result2 = deferred2.await()
    // eredmények összefűzése
}