Sobes.tech
Junior — Middle

Kako prekinuti izvršavanje asinhrone operacije?

sobes.tech АИ

Одговор од АИ

У iOS-у се обично користе следећи приступи за прекид асинхроне операције:

  1. Отказивање URLSession задатка — ако је асинхрона операција повезана са мрежним захтевом, можете позвати метод cancel() на објекту URLSessionTask.

  2. Користите DispatchWorkItem — при раду са GCD, можете креирати DispatchWorkItem и позвати cancel() да бисте покушали да прекинете извршавање.

  3. 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()

Важно је да унутар асинхроне операције буде имплементирана провера отказа, у супротном операција ће наставити са извршавањем.