Sobes.tech
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 sleutelwoord suspend vóó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 suspend geeft 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.