SwiftyTask
一个极端的队列系统,具有高性能,用于通过闭包管理应用程序中的所有任务
Task
在 GCD (Grand Central Dispatch) 上队列闭包的任务方法。
需求
- iOS 10.0+
- Swift 4.1+
- Xcode 9.2+
安装
CocoaPods
Task可以通过CocoaPods安装。要在Podfile中安装它,只需添加以下行:
use_frameworks!
pod "SwiftyTask"
或者
use_frameworks!
pod 'SwiftyTask', git: 'https://github.com/Albinzr/SwiftyTask', :tag => '1.0.1'
Carthage
要使用Carthage将Task集成到您的Xcode项目中,请在Cartfile中指定它:
github "CR-Creations/SwiftyTask"
示例
基础
SwiftyTask.main {
// main thread queue
return "1"
}.background { result in
// background qos class thread queue
print(result)
return "2"
}.userInteractive { result in
// userInteractive qos class thread queue
print(result)
return "3"
}.userInitiated { result in
//userInitiated qos class thread queue
print(result)
return "4"
}.onDefault { result in
// default qos class thread queue
print(result)
return "5"
}.run(.Main) { result in
// called at main thread queue
print(result)
print("Process completion")
}
自定义队列
let queue = dispatch_get_global_queue(QOS_CLASS_BACKGROUND, 0)
SwiftyTask.custom(queue) {
//customQueue
return nil
}.onDefault { result in
//default qos class thread queue
return result
}.main { result in
//main thread queue
return result
}.custom(customQueue) { result in
// customQueue
return result
}.run()
之后
SwiftyTask.main {
// main thread queue
print("start after: \(Date().description)")
return "1"
}.after(seconds: 5) { result in
// 5 seconds after the previous block
//background qos class thread queue
print(result)
return "after 2: \(Date().description)"
}.userInteractive { result in
//userInteractive qos class thread queue
print(result)
return "after 3: \(Date().description)"
}.after(Queue.Utility, seconds: 5) { result in
//5 seconds after the previous block
// called at utility qos class thread queue
print(result)
return "after 4: \(Date().description)"
}.run(.Main) { result in
// last call main thread queue
print(result)
print("after completion: \(Date().description)")
}
等待
SwiftyTask.main {
// main thread queue
print("start wait: \(Date().description)")
return "1"
}.wait(seconds: 5).background { result in
// 5 seconds after the previous block
// background qos class thread queue
print("wait 2: \(Date().description)")
return result
}.wait(seconds: 5).main { result in
// 5 seconds after the previous block
// main thread queue
print("wait 3: \(Date().description)")
return result
}.run()
许可证
MIT许可证。更多详情请参阅LICENSE文件。