Middle
Kas yra 'suspend' funkcija Kotlin?
sobes.tech AI
Atsakymas iš AI
suspend funkcija — tai funkcija, kurią galima laikinai sustabdyti (suspend) ir vėl atnaujinti (resume) vėliau. Ji yra pagrindinė korutinos (coroutines) dalis Kotlin ir naudojama asinchroninėms operacijoms vykdyti be srauto blokavimo.
Pagrindinės savybės:
- Gali būti iškviesta tik iš kitos
suspendfunkcijos arba iš korutinos konteksto. Kompiliatorius užtikrina šį apribojimą. - Ne blokuoja srauto. Atliekant asinchroninę operaciją (pvz., tinklo užklausą),
suspendfunkcija laikinai sustabdo korutinos vykdymą, atlaisvindama srautą kitoms užduotims. Kai asinchroninė operacija baigiasi, korutina atnaujinama nuo sustojimo vietos. - Naudojama struktūrizuotam paralelizmui. Derinant su
launchirasyncfunkcijomis iškotlinx.coroutinesbibliotekos, leidžia rašyti asinchroninį kodą nuosekliame, lengvai skaitomame stiliuje. - Kompiliatorius paverčia
suspendfunkcijas į galutinius automatus. Tai leidžia išsaugoti korutinos būseną tarp sustojimo taškų.
Pavyzdys:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Asinchroninės operacijos imitacija (pvz., tinklo užklausa)
delay(1000) // suspend taškai
return "Duomenys įkelti"
}
fun main() = runBlocking {
println("Pradedame įkėlimą...")
val data = fetchData() // iškviečiama suspend funkcija
println(data)
println("Įkėlimas baigtas")
}
Čia fetchData yra suspend funkcija, kuri naudoja delay (dar viena suspend funkcija), kad imituotų vėlavimą. delay yra sustojimo taškas. runBlocking sukuria korutinos sritį main vykdymui kaip blokuojantį srautą, tačiau viduje fetchData vyksta neblokiruojančiu būdu.