Вы можете использовать DispatchWorkItem
класс, который позволяет вам отменить вашу задачу индивидуально.
let workItem = DispatchWorkItem {
self.shouldEnableBtn()
}
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1, execute: workItem)
// To cancel the work-item task
workItem.cancel()
Лучше использовать OperationQueue
для этой задачи следующим образом:
let operationQueue = OperationQueue()
operationQueue.maxConcurrentOperationCount = 1
// Add operation in the queue
operationQueue.addOperation {
self.shouldEnableBtn()
}
// Cancel to on-going operation by
operationQueue.cancelAllOperations()
// Pause to on-going operation by
operationQueue.isSuspended = true