https://github.com/Albinzr/SwiftyTask
An extreme queuing system with high performance for managing all task in app with closure
https://github.com/Albinzr/SwiftyTask
backgroundqueue dispatchqueue swift swifty
Last synced: 4 months ago
JSON representation
An extreme queuing system with high performance for managing all task in app with closure
- Host: GitHub
- URL: https://github.com/Albinzr/SwiftyTask
- Owner: Albinzr
- License: mit
- Created: 2017-02-02T18:11:04.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2018-04-22T18:00:07.000Z (over 7 years ago)
- Last Synced: 2024-11-20T19:02:40.110Z (about 1 year ago)
- Topics: backgroundqueue, dispatchqueue, swift, swifty
- Language: Swift
- Size: 18.6 KB
- Stars: 22
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - SwiftyTask - An extreme queuing system with high performance for managing all task in app with closure. (GCD / Getting Started)
- awesome-ios-star - SwiftyTask - An extreme queuing system with high performance for managing all task in app with closure. (GCD / Getting Started)
- fucking-awesome-ios - SwiftyTask - An extreme queuing system with high performance for managing all task in app with closure. (GCD / Getting Started)
README
# SwiftyTask
An extreme queuing system with high performance for managing all task in app with closure
# Task
[](https://developer.apple.com/swift/)
[](https://developer.apple.com/swift/)
[](https://developer.apple.com/swift/)
[]()
[]()
[]()
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](http://cocoapods.org). To install
it, simply add the following line to your Podfile:
```ruby
use_frameworks!
pod "SwiftyTask"
```
or
```ruby
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:
```ruby
github "CR-Creations/SwiftyTask"
```
## Example
### Basics
```swift
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
```swift
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
```swift
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
```swift
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.