AsyncK

0.2.0

An alternative of `async/await` in Swift
koher/AsyncK

What's New

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

Description

  • Swift Tools 4.0.0
View More Packages from this Author

Dependencies

  • None
Last updated: Mon Nov 07 2022 20:14:25 GMT-0500 (GMT-05:00)