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
Blogs
Wie man C++-Entwickler wird: Tipps und Lebenslauf