Sobes.tech
Junior — Middle

¿Cómo se puede interrumpir la ejecución de una operación asíncrona?

sobes.tech AI

Respuesta de la IA

En iOS, generalmente se utilizan los siguientes enfoques para interrumpir una operación asíncrona:

  1. Cancelar tarea de URLSession — si la operación asíncrona está relacionada con una solicitud de red, se puede llamar al método cancel() en el objeto URLSessionTask.

  2. Uso de DispatchWorkItem — al trabajar con GCD, se puede crear un DispatchWorkItem y llamar a cancel() para intentar interrumpir su ejecución.

  3. Combine y Swift Concurrency — en Combine, se puede cancelar la suscripción (AnyCancellable), y en Swift Concurrency (async/await), se puede usar Task y llamar a cancel().

Ejemplo usando Task en Swift Concurrency:

let task = Task {
    for i in 1...10 {
        try Task.checkCancellation() // Verificación de cancelación
        print(i)
        try await Task.sleep(nanoseconds: 1_000_000_000)
    }
}

// Más tarde, para cancelar:
task.cancel()

Es importante que dentro de la operación asíncrona se implemente una verificación de cancelación, de lo contrario, la operación continuará ejecutándose.