"取消令牌" 是一个小对象,可以传递给一个或多个异步任务。此令牌可以用作指示用户不再对异步任务的输出感兴趣。
通过使用取消令牌,异步任务的创建和取消被分成两个独立的部分。
用法
- 创建一个
CancellationTokenSource
。 - 从源获取令牌。
- 将令牌传递给某个异步任务。
- 异步任务可能会将其传递给子任务。
- 当不再对异步任务的输出感兴趣时;取消源。此取消将传播到令牌以及所有令牌副本。
- 异步任务可以选择取消其操作并以自己的方式失败。
示例
以下是一个基于 绑定 到 Alamofire 的示例
// Create a CancellationTokenSource and a CancellationToken
let source = CancellationTokenSource()
let token = source.token
// Start the asynchroneous downloading of a large file, passing in the cancellation token
request(largeFileUrl, cancellationToken: token)
.response { response in
if let error = response.error as? NSError {
if error.domain == NSURLErrorDomain && error.code == NSURLErrorCancelled {
print("The downloading was cancelled")
}
}
else {
print("The response is available: \(response)")
}
}
// Some time later, request cancellation
source.cancel()
安装
CocoaPods
取消令(CancellationToken)在iOS和OS X上都可用。使用CocoaPods,您可以在Podfile中指定,以便将取消令集成到您的Xcode项目中
pod 'CancellationToken'
然后,运行以下命令
$ pod install
手动
取消令是一个单独的文件,所以您也可以在其中复制它到您的项目中,而不是使用CocoaPods
发布
- 3.2.0 - 2016-06-10 - podspec中的Swift 5.1
- 3.1.0 - 2018-09-13 - 更新到Swift 4.2,添加tvOS支持
- 3.0.0 - 2018-03-27 - 当源释放时自动取消
- 2.1.0 - 2017-11-27 - 锁定内部状态,适用于多线程
- 2.0.0 - 2017-10-30 - Swift 4支持,API清理
- 1.1.0 - 2017-06-18 - Swift 3.2支持
- 1.0.0 - 2017-02-23 - 在取消源销毁时取消
- 0.3.0 - 2016-09-20 - Swift 3支持
- 0.2.0 - 2015-09-11 - Swift 2支持
- 0.1.1 - 2015-06-24 - 没有更多的循环引用,修复内存泄漏
- 0.1.0 - 2015-03-31 - 首次公开发布
- 0.0.0 - 2014-10-31 - 为Q42项目提供的初始私有版本
授权 & 信用
取消令由Tom Lokhorst 编写,可供MIT许可下使用,因此您可以在商业和非商业项目中免费使用它。此库根据.NET取消模型建模。