Comment peut-on interrompre l'exécution d'une opération asynchrone?
sobes.tech IA
Réponse de l'IA
En iOS, on utilise généralement les approches suivantes pour interrompre une opération asynchrone :
-
Annuler une tâche URLSession — si l’opération asynchrone est liée à une requête réseau, vous pouvez appeler la méthode
cancel()sur l’objetURLSessionTask. -
Utilisation de
DispatchWorkItem— lors de l’utilisation de GCD, vous pouvez créer unDispatchWorkItemet appelercancel()pour tenter d’interrompre son exécution. -
Combine et Swift Concurrency — dans Combine, vous pouvez annuler l’abonnement (
AnyCancellable), et dans Swift Concurrency (async/await), utiliserTasket appelercancel().
Exemple avec Task en Swift Concurrency :
let task = Task {
for i in 1...10 {
try Task.checkCancellation() // Vérification de l’annulation
print(i)
try await Task.sleep(nanoseconds: 1_000_000_000)
}
}
// Plus tard, pour annuler :
task.cancel()
Il est important que l’opération asynchrone inclue une vérification de l’annulation, sinon elle continuera à s’exécuter.