Sobes.tech
Junior — Middle
90

Каким образом можно прервать выполнение асинхронной операции?

Компании, где спрашивали
Т-БанкТ-Банк

Ответ от нейросети

sobes.tech AI

В 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()

Важно, чтобы внутри асинхронной операции была реализована проверка на отмену, иначе операция продолжит выполняться.