Junior — Middle
88
Каким образом можно прервать выполнение асинхронной операции?
Companies where asked
Answer from AI
sobes.tech AI
В iOS для прерывания асинхронной операции обычно используют следующие подходы:
-
Отмена задачи URLSession — если асинхронная операция связана с сетевым запросом, можно вызвать метод
cancel()у объектаURLSessionTask. -
Использование
DispatchWorkItem— при работе с GCD можно создатьDispatchWorkItemи вызвать у негоcancel(), чтобы попытаться прервать выполнение. -
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()
Важно, чтобы внутри асинхронной операции была реализована проверка на отмену, иначе операция продолжит выполняться.