Sobes.tech
Middle

Wat betekent het sleutelwoord 'suspend' in Kotlin?

sobes.tech AI

Antwoord van AI

Het sleutelwoord suspend in Kotlin wordt gebruikt om een functie of lambda-uitdrukking te markeren die potentieel kan worden opgeschort en later kan worden hervat. Deze functies worden coroutine genoemd.

Belangrijkste eigenschappen van suspend functies:

  • Ze kunnen alleen worden aangeroepen vanuit een andere suspend functie of vanuit een coroutine scope.
  • Het opschorten van een functie blokkeert de thread niet waarop deze wordt uitgevoerd. In plaats daarvan kan de thread worden gebruikt voor andere taken.
  • Na het uitvoeren van een onderbroken operatie (bijvoorbeeld een netwerkverzoek), hervat de functie haar werk vanaf waar deze was opgeschort.
  • Achter de schermen transformeert de Kotlin-compiler suspend functies in toestandsmachines, gebruikmakend van Continuation-Passing Style (CPS).

Voorbeeld:

// Voorbeeld van een suspend functie om een langdurige operatie te simuleren
suspend fun fetchData(): String {
    // Simulatie van een netwerkverzoek of lange taak
    kotlinx.coroutines.delay(1000) // Opschorting zonder thread te blokkeren
    return "Data ontvangen"
}

// Functie die een suspend functie aanroept
fun main() = kotlinx.coroutines.runBlocking { // runBlocking creëert een coroutine scope
    println("Gegevens laden...")
    val data = fetchData() // Aanroep van suspend functie
    println("Gegevens: $data")
}