Middle
Wat is de functie 'suspend' in Kotlin?
sobes.tech AI
Antwoord van AI
De suspend functie is een functie die onderbroken (suspend) kan worden en later hervat (resume). Ze vormen een fundamenteel onderdeel van coroutines in Kotlin en worden gebruikt om asynchrone operaties uit te voeren zonder het thread te blokkeren.
Belangrijke kenmerken:
- Kan alleen worden aangeroepen vanuit een andere
suspendfunctie of vanuit de context van een coroutine. De compiler zorgt voor deze beperking. - Blokkeert de thread niet. Tijdens het uitvoeren van een asynchrone operatie (bijvoorbeeld een netwerkverzoek), onderbreekt de
suspendfunctie de uitvoering van de coroutine, waardoor de thread vrij komt voor andere taken. Wanneer de asynchrone operatie voltooid is, wordt de coroutine hervat vanaf waar deze was gestopt. - Wordt gebruikt voor gestructureerde parallelisme. In combinatie met functies zoals
launchenasyncuit dekotlinx.coroutinesbibliotheek, maakt het schrijven van asynchrone code in een sequentiële, gemakkelijk leesbare stijl mogelijk. - De compiler transformeert
suspendfuncties in eindige automaten. Dit maakt het mogelijk om de staat van de coroutine tussen de onderbrekingspunten te bewaren.
Voorbeeld:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Simulatie van een asynchrone operatie (bijvoorbeeld een netwerkverzoek)
delay(1000) // onderbrekingspunten
return "Data geladen"
}
fun main() = runBlocking {
println("Begin met laden...")
val data = fetchData() // aanroep van een suspend functie
println(data)
println("Laden voltooid")
}
Hier is fetchData een suspend functie die delay gebruikt (nog een suspend functie) om een vertraging te simuleren. delay is een onderbrekingspunt. runBlocking creëert een coroutine scope om main uit te voeren als een blokkerende thread, maar binnenin wordt fetchData asynchroon uitgevoerd.