Junior — Middle
Ako môžete prerušiť vykonávanie asynchrónnej operácie?
sobes.tech AI
Odpoveď od AI
V iOS sa obvykle používajú nasledujúce prístupy na prerušenie asynchrónnej operácie:
-
Zrušenie úlohy URLSession — ak je asynchrónna operácia spojená s sieťovým požiadavkom, môžete zavolať metódu
cancel()na objekteURLSessionTask. -
Použitie
DispatchWorkItem— pri práci s GCD môžete vytvoriťDispatchWorkItema zavolaťcancel(), aby ste sa pokúsili prerušiť vykonávanie. -
Combine a Swift Concurrency — v Combine môžete zrušiť odber (
AnyCancellable), a v Swift Concurrency (async/await) môžete použiťTaska zavolaťcancel().
Príklad s Task v Swift Concurrency:
let task = Task {
for i in 1...10 {
try Task.checkCancellation() // Kontrola zrušenia
print(i)
try await Task.sleep(nanoseconds: 1_000_000_000)
}
}
// Neskôr, na zrušenie:
task.cancel()
Je dôležité, aby v asynchrónnej operácii bola implementovaná kontrola zrušenia, inak operácia bude pokračovať v vykonávaní.