Middle
Como funcionam as construções async e await na linguagem de programação usada para desenvolver aplicações Android?
sobes.tech IA
Resposta da IA
No Kotlin, usado para desenvolvimento Android, async e await são funções da biblioteca de corrotinas. Elas não são palavras-chave da linguagem, como em algumas outras linguagens.
async inicia uma nova corrotina em segundo plano e retorna um objeto do tipo Deferred, que representa o resultado da execução no futuro. A corrotina que chamou async continua seu trabalho sem esperar a operação assíncrona iniciada terminar.
await é uma função suspending que é chamada em um objeto Deferred. Ela suspende a execução da corrotina atual até que a operação assíncrona iniciada com async seja concluída e retorne seu resultado. Se o resultado já estiver disponível, await o retorna imediatamente.
Sintaxe:
import kotlinx.coroutines.*
suspend fun fetchUserData(): String {
// Simulação de uma operação longa
delay(1000)
return "Dados do usuário"
}
suspend fun processData(data: String): String {
// Simulação de outra operação longa
delay(2000)
return "Processado: $data"
}
suspend fun main() {
val deferredData = CoroutineScope(Dispatchers.IO).async {
// Obter dados de forma assíncrona
fetchUserData()
}
// Podemos fazer outro trabalho enquanto os dados estão sendo carregados
val data = deferredData.await() // Espera a conclusão de fetchUserData()
val processedResult = withContext(Dispatchers.Default) {
// Processa os dados, possivelmente em outra thread
processData(data)
}
println(processedResult) // Vai imprimir "Processado: Dados do usuário" após os atrasos
}
Pontos principais:
asyncretornaDeferred, que é uma "promessa" do resultado.awaité uma função suspending que pausa a corrotina que a chama.- Usado no contexto de corrotinas para operações assíncronas não bloqueantes.
- Permite executar várias tarefas assíncronas em paralelo e coletar seus resultados.