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
}