Wie kann man die Ausführung einer asynchronen Operation abbrechen?
sobes.tech KI
Antwort von AI
In iOS werden zum Abbrechen einer asynchronen Operation in der Regel folgende Ansätze verwendet:
-
Abbrechen der URLSession-Aufgabe — wenn die asynchrone Operation mit einer Netzwerk-Anfrage verbunden ist, kann die Methode
cancel()amURLSessionTask-Objekt aufgerufen werden. -
Verwendung von
DispatchWorkItem— bei der Arbeit mit GCD kann einDispatchWorkItemerstellt undcancel()aufgerufen werden, um zu versuchen, die Ausführung abzubrechen. -
Combine und Swift Concurrency — in Combine kann man die Subscription (
AnyCancellable) abbrechen, und in Swift Concurrency (async/await) kann manTaskverwenden undcancel()aufrufen.
Beispiel mit Task in Swift Concurrency:
let task = Task {
for i in 1...10 {
try Task.checkCancellation() // Abfrage auf Abbruch
print(i)
try await Task.sleep(nanoseconds: 1_000_000_000)
}
}
// Später, um abzubrechen:
task.cancel()
Wichtig ist, dass innerhalb der asynchronen Operation eine Abbruchprüfung implementiert ist, da sonst die Operation weiterläuft.