Junior — Middle
¿En qué se diferencia el uso de funciones asíncronas con la palabra clave async del llamada a launch en el contexto de la programación asíncrona?
sobes.tech AI
Respuesta de la IA
La palabra clave async se usa para declarar una función asíncrona que devuelve un objeto de tipo Deferred o Job y puede ser suspendida mediante funciones suspend internas. La llamada a dicha función no la ejecuta automáticamente, sino que devuelve un resultado diferido que se puede obtener con await.
launch es una función que inicia una nueva coroutine y comienza su ejecución inmediatamente. Devuelve un objeto Job, que se puede usar para gestionar el ciclo de vida de la coroutine (por ejemplo, cancelarla).
Ejemplo:
suspend fun fetchData(): String {
delay(1000)
return "Data"
}
fun main() = runBlocking {
// async devuelve un Deferred, la ejecución comienza inmediatamente
val deferred = async { fetchData() }
println("Haciendo otra tarea")
val result = deferred.await() // esperamos el resultado
println(result)
// launch inicia una coroutine, pero no devuelve un resultado
val job = launch {
val data = fetchData()
println(data)
}
job.join() // esperamos a que termine
}
En resumen:
asyncse usa para iniciar una operación asíncrona con resultado de retorno.launchinicia una coroutine sin valor de retorno, para tareas en segundo plano.asyncdevuelveDeferred,launch—Job.