Junior — Middle
Como organizar a espera pela conclusão das corutinas num programa assíncrono?
sobes.tech IA
Resposta da IA
Para esperar que as corrotinas em Kotlin terminem, normalmente usa-se a função join() no objeto Job, que é retornado ao iniciar a corrotina. Se a corrotina for iniciada com launch, ela retorna um Job, e a chamada job.join() suspende o thread atual até que a corrotina termine.
Exemplo:
val job = GlobalScope.launch {
// algum trabalho assíncrono
delay(1000)
println("Corrotina terminada")
}
runBlocking {
job.join() // esperar a conclusão da corrotina
println("A corrotina foi concluída")
}
Se usar async, para obter o resultado e esperar a conclusão da corrotina, usa-se await().
val deferred = GlobalScope.async {
delay(1000)
return@async 42
}
runBlocking {
val result = deferred.await() // esperar e obter o resultado
println("Resultado: $result")
}