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()