Sobes.tech
Junior — Middle

¿Cómo detecta coroutineScope que sus corutinas han sido canceladas?

sobes.tech AI

Respuesta de la IA

coroutineScope en las corrutinas de Kotlin detecta la cancelación de sus corrutinas hijas a través del mecanismo de cancelación del contexto de la corrutina. Si una de las corrutinas dentro de coroutineScope se cancela (por ejemplo, debido a una excepción o cancelación explícita), entonces todo coroutineScope recibe la señal de cancelación.

Esto sucede porque todas las corrutinas dentro de coroutineScope heredan un CoroutineContext común, que contiene un Job. Cuando se cancela ese Job, todas las corrutinas hijas también se cancelan.

De esta manera, coroutineScope supervisa el estado de sus corrutinas hijas a través del contexto común y responde a su cancelación, interrumpiendo la ejecución y lanzando una excepción CancellationException, si es necesario.

Ejemplo:

suspend fun ejemplo() = coroutineScope {
    val job = launch {
        // algún trabajo
        delay(1000)
    }
    delay(500)
    job.cancel() // cancelamos la corrutina hija
    // coroutineScope detectará la cancelación y se interrumpirá
}