Avatar ·

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