Junior — Middle
Kā var pārtraukt asīnhronās operācijas izpildi?
sobes.tech AI
Atbilde no AI
iOS parasti izmanto šādus būdus asinhronai operācijai pārtraukt:
-
URLSession uzdevuma atcelšana — ja asinhronā operācija ir saistīta ar tīkla pieprasījumu, var izsaukt
cancel()metodiURLSessionTaskobjektā. -
DispatchWorkItemizmantošana — strādājot ar GCD, var izveidotDispatchWorkItemun izsauktcancel(), lai mēģinātu pārtraukt izpildi. -
Combine un Swift Concurrency —
Combinevar atcelt abonementu (AnyCancellable), bet Swift Concurrency (async/await) — izmantotTaskun izsauktcancel().
Piemērs ar Task Swift Concurrency:
let task = Task {
for i in 1...10 {
try Task.checkCancellation() // Pārtraukšanas pārbaude
print(i)
try await Task.sleep(nanoseconds: 1_000_000_000)
}
}
// Vēlāk, lai pārtrauktu:
task.cancel()
Svarīgi, lai asinhronajā operācijā būtu ieviesta pārtraukšanas pārbaude, citādi operācija turpināsies.