Junior — Middle
Jak lze přerušit provádění asynchronní operace?
sobes.tech AI
Odpověď od AI
V iOS se obvykle používají následující přístupy k přerušení asynchronní operace:
-
Zrušení úlohy URLSession — pokud je asynchronní operace spojena s požadavkem na síti, lze zavolat metodu
cancel()na objektuURLSessionTask. -
Použití
DispatchWorkItem— při práci s GCD lze vytvořitDispatchWorkItema zavolatcancel(), aby se pokusilo přerušit provádění. -
Combine a Swift Concurrency — v Combine lze zrušit odběr (
AnyCancellable), a ve Swift Concurrency (async/await) lze použítTaska zavolatcancel().
Příklad s Task ve Swift Concurrency:
let task = Task {
for i in 1...10 {
try Task.checkCancellation() // Kontrola zrušení
print(i)
try await Task.sleep(nanoseconds: 1_000_000_000)
}
}
// Později, pro zrušení:
task.cancel()
Je důležité, aby v asynchronní operaci byla implementována kontrola zrušení, jinak operace bude pokračovat v běhu.