Junior — Middle
Kako prekinuti izvršavanje asinhrone operacije?
sobes.tech АИ
Одговор од АИ
У iOS-у се обично користе следећи приступи за прекид асинхроне операције:
-
Отказивање URLSession задатка — ако је асинхрона операција повезана са мрежним захтевом, можете позвати метод
cancel()на објектуURLSessionTask. -
Користите
DispatchWorkItem— при раду са GCD, можете креиратиDispatchWorkItemи позватиcancel()да бисте покушали да прекинете извршавање. -
Combine и Swift Concurrency — у Combine-у можете отказати претплату (
AnyCancellable), а у Swift Concurrency (async/await) користитеTaskи позовитеcancel().
Пример са Task у Swift Concurrency:
let task = Task {
for i in 1...10 {
try Task.checkCancellation() // Провера отказа
print(i)
try await Task.sleep(nanoseconds: 1_000_000_000)
}
}
// Касније, за отказ:
task.cancel()
Важно је да унутар асинхроне операције буде имплементирана провера отказа, у супротном операција ће наставити са извршавањем.