Sobes.tech
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:

  1. URLSession uzdevuma atcelšana — ja asinhronā operācija ir saistīta ar tīkla pieprasījumu, var izsaukt cancel() metodi URLSessionTask objektā.

  2. DispatchWorkItem izmantošana — strādājot ar GCD, var izveidot DispatchWorkItem un izsaukt cancel(), lai mēģinātu pārtraukt izpildi.

  3. Combine un Swift ConcurrencyCombine var atcelt abonementu (AnyCancellable), bet Swift Concurrency (async/await) — izmantot Task un izsaukt cancel().

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.