Skip to content

iosdevmax/Swift-Promises

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 

Repository files navigation

Swift Promises

Promise concept in Swift.

Handy solution for async tasks to avoid the "callback hell"

How to use:

  1. Drag and drop these files into your project folder
  2. Setup your sequence.
func createSequence() -> SequenceASync<Error?> {
    return async {
        do {
            // 1.
            _ = try await(self.firstTask())
            // 2.
            _ = try await(self.secondTask())
            // 3.
            _ = try await(self.thirdTask())
            
            return nil
        } catch {
            return error
        }
    }
}

func firstTask() -> SequenceASync<Any> {
    return SequenceASync<Any>({ (resolve, reject) in
    
        YourClass.yourMethod(completion: { (success, error) in
            guard error == nil else {
                reject(error)
                return
            }
            resolve(true)
        })
    })
    
}

func secondTask() -> SequenceASync<Any> {
    return SequenceASync<Any>({ (resolve, reject) in
        YourClass.yourMethod(completion: { (success, error) in
            guard error == nil else {
                reject(error)
                return
            }
            resolve(true)
        })
    })
}

func thirdTask() -> SequenceASync<Any> {
    return SequenceASync<Any>({ (resolve, reject) in
        YourClass.yourMethod(completion: { (success, error) in
            guard error == nil else {
                reject(error)
                return
            }
            resolve(true)
        })
    })
}
  1. Implement in your code
let queue = DispatchQueue.global(qos: .userInitiated)
queue.async {
    let sequence = self.createSequence()
    sequence.then(queue: .main, { (success, error) in
        
        
    })
}

About

Promise concept in Swift

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages