Skip to content

An extreme queuing system with high performance for managing all task in app with closure

License

Notifications You must be signed in to change notification settings

Albinzr/SwiftyTask

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SwiftyTask

An extreme queuing system with high performance for managing all task in app with closure

Task

Swift 3.0 Platforms iOS Xcode 8.0 Gemnasium Ratting license

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.

About

An extreme queuing system with high performance for managing all task in app with closure

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published