Skip to content

koher/AsyncK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AsyncK

Carthage compatible Swift Package Manager

AsyncK provides Async, await, beginAsync and suspendAsync which are compatible with ones in this proposal.

The following code written with async/await

func foo() async -> Int {
    return suspendAsync { continuation in
        // ...
    }
}

func bar(_ x: Int) async -> Int {
    // ...
}

beginAsync {
    let a = await foo()
    let b = await bar(a)
    print(b)
}

can be rewritten as follows:

func foo() -> Async<Int> {
    return suspendAsync { continuation in
        // ...
    }
}

func bar(_ x: Int) -> Async<Int> {
    // ...
}

beginAsync {
    foo().await { a in
        bar(a).await { b -> Void in
            print(b)
        }
    }
}

It is also possible to flatten the nest inside the beginAsync's trailing closure.

foo().await { a in
    bar(a)
}.await { b -> Void in
    print(b)
}

License

MIT

About

An alternative of `async/await` in Swift

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors