SwiftyTask
SwiftyTask copied to clipboard
An extreme queuing system with high performance for managing all task in app with closure
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.