Sobes.tech
Junior — Middle

Wie kann man die Ausführung einer suspend-Funktion in Kotlin initiieren?

sobes.tech KI

Antwort von AI

In Kotlin können suspend-Funktionen nur aus einer anderen suspend-Funktion oder aus einer Coroutine aufgerufen werden. Um eine suspend-Funktion außerhalb eines suspend-Kontexts zu starten, verwendet man einen Coroutine-Scope und Startfunktionen wie launch oder async aus der kotlinx.coroutines-Bibliothek.

Beispiel:

import kotlinx.coroutines.*

suspend fun fetchData() {
    delay(1000) // Simulation einer langen Operation
    println("Daten empfangen")
}

fun main() {
    runBlocking { // startet eine Coroutine und blockiert den aktuellen Thread
        fetchData() // Aufruf einer suspend-Funktion innerhalb eines suspend-Kontexts
    }

    GlobalScope.launch { // startet eine Coroutine im globalen Scope
        fetchData()
    }
    Thread.sleep(2000) // damit das Programm nicht vorher beendet wird
}

Daher muss man, um eine suspend-Funktion zu initiieren, sich entweder innerhalb einer suspend-Funktion befinden oder eine Coroutine mit launch, async oder runBlocking starten.