Sobes.tech
Junior — Middle

Jak lze přerušit provádění asynchronní operace?

sobes.tech AI

Odpověď od AI

V iOS se obvykle používají následující přístupy k přerušení asynchronní operace:

  1. Zrušení úlohy URLSession — pokud je asynchronní operace spojena s požadavkem na síti, lze zavolat metodu cancel() na objektu URLSessionTask.

  2. Použití DispatchWorkItem — při práci s GCD lze vytvořit DispatchWorkItem a zavolat cancel(), aby se pokusilo přerušit provádění.

  3. Combine a Swift Concurrency — v Combine lze zrušit odběr (AnyCancellable), a ve Swift Concurrency (async/await) lze použít Task a zavolat cancel().

Příklad s Task ve Swift Concurrency:

let task = Task {
    for i in 1...10 {
        try Task.checkCancellation() // Kontrola zrušení
        print(i)
        try await Task.sleep(nanoseconds: 1_000_000_000)
    }
}

// Později, pro zrušení:
task.cancel()

Je důležité, aby v asynchronní operaci byla implementována kontrola zrušení, jinak operace bude pokračovat v běhu.