Middle
Wat is een suspend-functie in Kotlin?
sobes.tech AI
Antwoord van AI
De suspend-functie — is een functie in Kotlin die "onderbroken" (suspend) kan worden en later weer "hersteld" (resume). Ze wordt gebruikt om asynchrone, niet-blokkerende code in een imperatieve stijl te schrijven, wat het werken met langdurige operaties zoals netwerkverzoeken of databasebewerkingen vereenvoudigt.
Belangrijke kenmerken van suspend-functies:
- Modificator
suspend: Wordt gedeclareerd met het sleutelwoordsuspendvóór de functienaam. - Werken met coroutines: Wordt alleen aangeroepen vanuit andere suspend-functies of coroutine-builders (bijvoorbeeld
launch,async). - Niet-blokkerende aard: Het onderbreken van een suspend-functie blokkeert de thread waarop deze wordt uitgevoerd niet. In plaats daarvan wordt de thread vrijgegeven om andere taken uit te voeren, en wanneer het resultaat van de asynchrone operatie klaar is, wordt de uitvoering van de functie hervat vanaf het onderbrekingspunt.
- Expliciete markering: De modifier
suspendgeeft duidelijk aan dat het aanroepen van deze functie mogelijk een lange operatie is en niet direct op de hoofdthread (UI-thread) moet worden uitgevoerd.
Voorbeeld:
// Normale functie
fun fetchDataBlocking(): String {
// Blokkerende netwerkoproep, kan vastlopen
Thread.sleep(2000)
return "Gegevens ontvangen"
}
// Suspend-functie
suspend fun fetchDataNonBlocking(): String {
// Asynchrone netwerkoproep
// De coroutine wordt hier onderbroken, thread wordt niet geblokkeerd
delay(2000) // Voorbeeld van een suspend-functie die een vertraging simuleert
return "Gegevens asynchroon ontvangen"
}
Suspend-functies vormen de basis voor het bouwen van gemakkelijk leesbare en onderhoudbare asynchrone code met behulp van coroutines.