Avatar ·

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