Kommander —管理不同线程中的任务执行
Apple已正式验证我们的Kommander库,并将其添加到Swift Source Compatibility中 。
灵感来自我们Android架构师Wokdsem的Java库Kommander。
Intelygenz iOS团队已经合作从头开始编写该库,并对其进行了优化以在iOS,tvOS,watchOS或macOS上有效地工作。
El Pais或Los 40等应用程序可将其用于所有网络,数据库和核心请求,并且它是新的Intelygenz iOS体系结构的一部分 。
但是它是什么,它有什么作用?
意图
- 将同步执行封装为对象。
- 控制执行线程/队列。
- 支持执行取消。
- 将调用操作的对象与知道如何执行操作的对象分离。
- 能够同时或顺序执行多个操作。
- 独立于任何上下文封装执行所需的所有内容。
- 始终知道执行状态。
问题
OperationQueue和DispatchQueue的功能不足以自己完成此操作。
解
通过遵循命令设计模式来实现我们自己的并发库。
科曼德
Kommander是一个Swift库,用于管理不同线程中的任务执行。
通过定义,一个简单但功能强大的概念Kommand。
特征
- 制作一个或多个命令
- 执行命令或多个命令
- 取消一个或多个命令
- 设置命令成功阻止
- 设置命令错误块
- 主线程分配器
- 当前线程分派器
- 自定义OperationQueue调度程序
- 自定义DispatchQueue调度程序
- 执行一次或多次操作
- 执行顺序或并发块
- 执行DispatchWorkItem
- 科曼德州
- 与watchOS兼容
- 与tvOS兼容
- Swift 2版本
- Objective-C版本
安装
Kommander可通过CocoaPods获得。
要安装它,只需将以下行添加到您的Podfile中:
pod 'Kommander'
或者,您可以使用迦太基安装它:
github "intelygenz/Kommander-iOS"
或使用Swift Package Manager安装它:
dependencies: [
.Package(url: "https://github.com/intelygenz/Kommander-iOS.git")
]
用法
执行Kommand:
Kommander().makeKommand {
// Your code here
}.execute()
添加成功回调:
Kommander().makeKommand {
return "Your string"
}.onSuccess { yourString in
print(yourString)
}.execute()
添加错误回调:
Kommander().makeKommand {
throw CocoaError(.featureUnsupported)
}.onError({ error in
print(String(describing: error!))
}).execute()
取消Kommand:
let kommand = Kommander().makeKommand {
// Your code here
}.onSuccess { result in
// Your success handling here
}.onError({ error in
// Your error handling here
}).execute()
kommand.cancel()