Kotlin: withContext() vs async-await — cuál es la diferencia y qué elegir?
¡Hola, colegas! Recientemente comencé a aprender corrutinas en Kotlin y me confundí entre `withContext()` y la construcción `async-await`. A primera vista, ambos permiten ejecutar código en otro contexto (por ejemplo, en `Dispatchers.IO`) y obtener un resultado. Pero no entiendo cuándo usar cada uno.
Aquí hay un ejemplo simple. Supongamos que necesito cargar datos de la red y procesarlos:
```kotlin
suspend fun loadUser(): User {
return withContext(Dispatchers.IO) {
// simulación de solicitud de red
delay(1000)
User("Alexey")
}
}
suspend fun loadUserAsync(): User {
val deferred = GlobalScope.async(Dispatchers.IO) {
delay(1000)
User("Alexey")
}
return deferred.await()
}
```
Ambas funciones hacen lo mismo: devuelven un User después de un segundo. Pero he oído que `async-await` se usa a menudo para tareas paralelas, mientras que `withContext` se usa para cambiar el dispatcher. Sin embargo, en una llamada secuencial simple no veo la diferencia.
Además, noté que