SwiftyTask
An extreme queuing system with high performance for managing all task in app with closure
Task
Method Tasking of queued closure on GCD (Grand Central Dispatch).
Requirements
- iOS 10.0+
- Swift 4.1+
- Xcode 9.2+
Installation
CocoaPods
Task is available through CocoaPods. To install it, simply add the following line to your Podfile:
use_frameworks!
pod "SwiftyTask"
or
use_frameworks!
pod 'SwiftyTask', git: 'https://github.com/Albinzr/SwiftyTask', :tag => '1.0.1'
Carthage
To integrate Task into your Xcode project using Carthage, specify it in your Cartfile:
github "CR-Creations/SwiftyTask"
Example
Basics
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")
}
Custom queue
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()
After
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)")
}
Wait
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()
License
MIT license. See the LICENSE file for more info.