AsyncTimeoutOperationQueue
使用方法
作为常规队列的扩展使用
import AsyncTimeoutOperationQueue
let queue = OperationQueue()
queue
.addAsyncOperation { (completion) in
//some async work here
//don't forget to call completion when it's done!
completion?()
}
.timeout(5)
.onTimeout {
//called only if operation cancelled by timeout
}
.onCompletionOrTimeout {
//called in both cases: timeout or success finish
}
如果您想为此队列中的所有操作设置默认超时时间,只需创建AsyncTimeoutOperationQueue
import AsyncTimeoutOperationQueue
let queue = AsyncTimeoutOperationQueue()
queue.defaultTimeout = 10
queue
.addAsyncOperation { (completion) in
//some async work here
//don't forget to call completion when it's done!
completion?()
}
.timeout(5) //you still able to override default timeout
.onTimeout {
//called only if operation cancelled by timeout
}
.onCompletionOrTimeout {
//called in both cases: timeout or success finish
}
您也可以创建AsyncBlockOperation本身或继承它
import AsyncTimeoutOperationQueue
let operation =
AsyncBlockOperation(block: { (completion) in
completion?()
},
timeout: 30,
onTimeout: {
})
需求
Xcode 9+, Swift 4.0,没有其他特殊要求
安装
AsyncTimeoutOperationQueue可通过CocoaPods获得。要安装,只需将以下行添加到Podfile中
pod 'AsyncTimeoutOperationQueue'
作者:
severehed
许可协议
AsyncTimeoutOperationQueue 在 MIT 许可协议下可用。更多信息请参阅 LICENSE 文件。