Kotlin: withContext() vs async-await — was ist der Unterschied und was wählt man?
Hallo Kollegen! Ich habe kürzlich begonnen, Coroutines in Kotlin zu lernen, und bin verwirrt zwischen `withContext()` und dem `async-await`-Konstrukt. Auf den ersten Blick erlauben beide, Code in einem anderen Kontext (z.B. auf `Dispatchers.IO`) auszuführen und ein Ergebnis zu erhalten. Aber ich verstehe nicht, wann man was anwenden soll.
Hier ist ein einfaches Beispiel. Angenommen, ich muss Daten aus dem Netz laden und verarbeiten:
```kotlin
suspend fun loadUser(): User {
return withContext(Dispatchers.IO) {
// Simulation einer Netzwerkanfrage
delay(1000)
User("Alexei")
}
}
suspend fun loadUserAsync(): User {
val deferred = GlobalScope.async(Dispatchers.IO) {
delay(1000)
User("Alexei")
}
return deferred.await()
}
```
Beide Funktionen tun dasselbe — sie geben nach einer Sekunde einen User zurück. Aber ich habe gehört, dass `async-await` oft für parallele Aufgaben verwendet wird, während `withContext` für den Wechsel des Dispatchers dient. In einem einfachen sequenziellen Aufruf sehe ich jedoch keinen Unterschied.
Außerdem habe ich bemerkt
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen