AsyncK 提供了与此提案中相同的 Async
、await
、beginAsync
和 suspendAsync
。
以下是使用 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)
}
可以被重写为如下形式
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)
}
}
}
也可以扁平化 beginAsync
的尾随闭包内部的嵌套。
foo().await { a in
bar(a)
}.await { b -> Void in
print(b)
}
MIT