Junior — Middle
Was ist der Unterschied zwischen der Verwendung von asynchronen Funktionen mit dem Schlüsselwort async und dem Aufruf von launch im Kontext der asynchronen Programmierung?
sobes.tech KI
Antwort von AI
Das Schlüsselwort async wird verwendet, um eine asynchrone Funktion zu deklarieren, die ein Objekt vom Typ Deferred oder Job zurückgibt und mit internen suspend-Funktionen pausiert werden kann. Der Aufruf einer solchen Funktion startet sie nicht automatisch, sondern gibt ein verzögertes Ergebnis zurück, das mit await abgerufen werden kann.
launch ist eine Funktion, die eine neue Coroutine startet und sofort mit ihrer Ausführung beginnt. Sie gibt ein Job-Objekt zurück, das zur Steuerung des Lebenszyklus der Coroutine verwendet werden kann (z.B. zum Abbrechen).
Beispiel:
suspend fun fetchData(): String {
delay(1000)
return "Daten"
}
fun main() = runBlocking {
// async gibt ein Deferred zurück, die Ausführung beginnt sofort
val deferred = async { fetchData() }
println("Andere Arbeit erledigen")
val result = deferred.await() // Ergebnis abwarten
println(result)
// launch startet eine Coroutine, gibt aber kein Ergebnis zurück
val job = launch {
val data = fetchData()
println(data)
}
job.join() // auf Abschluss warten
}
Kurz gesagt:
asyncwird verwendet, um eine asynchrone Operation mit Rückgabewert zu starten.launchstartet eine Coroutine ohne Rückgabewert, für Hintergrundaufgaben.asyncgibtDeferredzurück,launch—Job.