Middle
¿Qué es la función 'suspend' en Kotlin?
sobes.tech AI
Respuesta de la IA
La función suspend es una función que puede ser suspendida (suspend) y reanudada (resume) posteriormente. Son una parte fundamental de las corutinas en Kotlin y se utilizan para realizar operaciones asíncronas sin bloquear el hilo.
Características clave:
- Solo puede ser llamada desde otra función
suspendo desde el contexto de una corutina. El compilador garantiza esta restricción. - No bloquea el hilo. Al realizar una operación asíncrona (por ejemplo, una solicitud de red), la función
suspendsuspende la ejecución de la corutina, liberando el hilo para otras tareas. Cuando la operación asíncrona termina, la corutina se reanuda desde donde se detuvo. - Se usa para el paralelismo estructurado. En combinación con funciones como
launchyasyncde la bibliotecakotlinx.coroutines, permite escribir código asíncrono en un estilo secuencial y fácil de leer. - El compilador transforma las funciones
suspenden autómatas finitos. Esto permite mantener el estado de la corutina entre puntos de suspensión.
Ejemplo:
import kotlinx.coroutines.*
suspend fun fetchData(): String {
// Simulación de una operación asíncrona (por ejemplo, una solicitud de red)
delay(1000) // puntos de suspensión
return "Datos cargados"
}
fun main() = runBlocking {
println("Comenzando la carga...")
val data = fetchData() // Llamada a función suspend
println(data)
println("Carga completada")
}
Aquí, fetchData es una función suspend que usa delay (otra función suspend) para simular una demora. delay es un punto de suspensión. runBlocking crea un ámbito de corutina para ejecutar main como un hilo bloqueante, pero dentro de ella, fetchData se ejecuta de manera no bloqueante.