Hoe kunt u een asynchrone operatie onderbreken?
sobes.tech AI
Antwoord van AI
In iOS worden de volgende benaderingen meestal gebruikt om een asynchrone operatie te onderbreken:
-
Annuleren van URLSession-taak — als de asynchrone operatie gerelateerd is aan een netwerkverzoek, kan de
cancel()-methode worden aangeroepen op hetURLSessionTask-object. -
Gebruik van
DispatchWorkItem— bij werken met GCD kan eenDispatchWorkItemworden gemaakt encancel()worden aangeroepen om te proberen de uitvoering te onderbreken. -
Combine en Swift Concurrency — in Combine kan je de abonnement (
AnyCancellable) annuleren, en in Swift Concurrency (async/await) kan jeTaskgebruiken encancel()aanroepen.
Voorbeeld met Task in Swift Concurrency:
let task = Task {
for i in 1...10 {
try Task.checkCancellation() // Controle op annulering
print(i)
try await Task.sleep(nanoseconds: 1_000_000_000)
}
}
// Later, om te annuleren:
task.cancel()
Het is belangrijk dat binnen de asynchrone operatie een controle op annulering is geïmplementeerd, anders blijft de operatie doorgaan.