Middle
Mida tähendab võtmesõna 'suspend' Kotlinis?
sobes.tech AI
Vastus AI-lt
Kotlinis märksõna suspend kasutatakse funktsiooni või lambda väljendi märkimiseks, mis potentsiaalselt võib olla peatatud ja hiljem jätkatud. Selliseid funktsioone nimetatakse korutinideks.
suspend funktsioonide peamised omadused:
- Neid saab kõneerida ainult teise
suspendfunktsiooni või korutina scope'ist. - Funktsiooni peatamine ei blokeeri selle täitmisel olevat niiti. Selle asemel saab niit kasutada teiste ülesannete täitmiseks.
- Pärast peatatud operatsiooni (näiteks võrgupäringut) täitmist jätkab funktsioon tööd sealt, kus see peatati.
- Tagaplaanil teisendab Kotlin kompilaator
suspendfunktsioonid olekute masinatesse, kasutades Continuation-Passing Style (CPS).
Näide:
// Näide `suspend` funktsioonist, mis simuleerib pikaajalist operatsiooni
suspend fun fetchData(): String {
// Võrgu päringu või pika ülesande simulatsioon
kotlinx.coroutines.delay(1000) // Peatamine ilma niidi blokeerimiseta
return "Andmed saadud"
}
// Funktsioon, mis kutsub `suspend` funktsiooni
fun main() = kotlinx.coroutines.runBlocking { // runBlocking loob korutina scope'i
println("Andmete laadimine...")
val data = fetchData() // `suspend` funktsiooni kutsumine
println("Andmed: $data")
}