Sobes.tech
Middle

¿Qué es una función suspend en el lenguaje Kotlin?

sobes.tech AI

Respuesta de la IA

La función suspend — es una función en Kotlin que puede ser "pausada" (suspend) y luego "reanudada" (resume). Se utiliza para escribir código asíncrono y no bloqueante en estilo imperativo, lo que simplifica el trabajo con operaciones a largo plazo, como solicitudes de red o operaciones con bases de datos.

Características clave de las funciones suspend:

  • Modificador suspend: Se declara con la palabra clave suspend antes del nombre de la función.
  • Trabajo con corutinas: Solo se llaman desde otras funciones suspend o desde constructores de corutinas (por ejemplo, launch, async).
  • Naturaleza no bloqueante: La suspensión de una función suspend no bloquea el hilo en el que se ejecuta. En su lugar, el hilo se libera para realizar otras tareas, y cuando el resultado de la operación asíncrona está listo, la ejecución de la función se reanuda desde el punto de suspensión.
  • Marcado explícito: El modificador suspend indica claramente que la llamada a esta función puede ser una operación larga y no debe ejecutarse directamente en el hilo principal (hilo UI).

Ejemplo:

// Función normal
fun fetchDataBlocking(): String {
    // Llamada de red bloqueante, puede colgarse
    Thread.sleep(2000)
    return "Datos recibidos"
}

// Función suspend
suspend fun fetchDataNonBlocking(): String {
    // Llamada de red asíncrona
    // La corutina se suspende aquí, el hilo no se bloquea
    delay(2000) // Ejemplo de función suspend que simula una demora
    return "Datos recibidos de forma asíncrona"
}

Las funciones suspend son la base para construir código asíncrono fácil de leer y mantener, utilizando corutinas.