Sobes.tech
Junior — Middle

¿Cuál es el papel del método Context.Done en la gestión de la finalización de operaciones asíncronas?

sobes.tech AI

Respuesta de la IA

El método Context.Done() devuelve un canal que se cierra cuando el contexto se cancela o expira su tiempo de vida. Esto permite que las operaciones asíncronas detecten la señal de finalización y se interrumpan correctamente.

Por ejemplo, en una goroutine, se puede escuchar este canal y finalizar el trabajo al cancelar el contexto:

ctx, cancel := context.WithCancel(context.Background())
go func() {
    select {
    case <-ctx.Done():
        // El contexto ha sido cancelado, finalizar
        return
    case data := <-dataCh:
        // Procesar datos
    }
}()

// Más tarde, llamamos a cancel() para detener la goroutine
cancel()

De esta manera, Context.Done() actúa como una señal para la finalización segura y oportuna de operaciones asíncronas.