Middle
Čo je funkcia 'suspend' v Kotlin?
sobes.tech AI
Odpoveď od AI
Funkcia suspend je funkcia, ktorú je možné pozastaviť (suspend) a neskôr pokračovať (resume). Sú základnou súčasťou korutín v Kotlin a slúžia na vykonávanie asynchrónnych operácií bez blokovania vlákna.
Kľúčové vlastnosti:
- Môže byť volaná iba z inej
suspendfunkcie alebo z kontextu korutiny. Kompilátor zabezpečuje toto obmedzenie. - Neblokuje vlákno. Pri vykonávaní asynchrónnej operácie (napríklad sieťovej požiadavky)
suspendfunkcia pozastaví vykonávanie korutiny, uvoľní vlákno pre iné úlohy. Keď je asynchrónna operácia dokončená, korutina sa pokračuje od miesta, kde bola pozastavená. - Používa sa na štruktúrovanú paralelizáciu. V kombinácii s funkciami ako
launchaasyncz knižnicekotlinx.coroutines, umožňuje písanie asynchrónneho kódu v sekvenčnom, ľahko čitateľnom štýle. - Kompilátor transformuje
suspendfunkcie na konečné automaty. To umožňuje zachovať stav korutiny medzi bodmi pozastavenia.
Príklad:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Simulácia asynchrónnej operácie (napríklad sieťová požiadavka)
delay(1000) // body pozastavenia
return "Dáta načítané"
}
fun main() = runBlocking {
println("Začíname načítanie...")
val data = fetchData() // volanie suspend funkcie
println(data)
println("Načítanie ukončené")
}
Tu je fetchData suspend funkcia, ktorá používa delay (ďalšiu suspend funkciu) na simuláciu oneskorenia. delay je bod pozastavenia. runBlocking vytvára korutínový rozsah na vykonanie main ako blokujúceho vlákna, ale vo vnútri nej fetchData beží neblokujúco.