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

  1. Zrušenie úlohy URLSession — ak je asynchrónna operácia spojená s sieťovým požiadavkom, môžete zavolať metódu cancel() na objekte URLSessionTask.

  2. Použitie DispatchWorkItem — pri práci s GCD môžete vytvoriť DispatchWorkItem a zavolať cancel(), aby ste sa pokúsili prerušiť vykonávanie.

  3. Combine a Swift Concurrency — v Combine môžete zrušiť odber (AnyCancellable), a v Swift Concurrency (async/await) môžete použiť Task a 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í.