Kotlin: withContext() vs async-await — qual a diferença e o que escolher?
Olá, colegas! Recentemente comecei a aprender coroutines em Kotlin e fiquei confuso entre `withContext()` e a construção `async-await`. À primeira vista, ambos permitem executar código em outro contexto (por exemplo, em `Dispatchers.IO`) e obter um resultado. Mas não entendo quando usar cada um.
Aqui está um exemplo simples. Suponha que eu precise carregar dados da rede e processá-los:
```kotlin
suspend fun loadUser(): User {
return withContext(Dispatchers.IO) {
// simulação de requisição de rede
delay(1000)
User("Alexey")
}
}
suspend fun loadUserAsync(): User {
val deferred = GlobalScope.async(Dispatchers.IO) {
delay(1000)
User("Alexey")
}
return deferred.await()
}
```
Ambas as funções fazem a mesma coisa — retornam User após um segundo. Mas ouvi dizer que `async-await` é frequentemente usado para tarefas paralelas, enquanto `withContext` é para mudar o dispatcher. No entanto, em uma chamada sequencial simples, não vejo diferença.
Também notei que