Bridging old GCD and structured concurrency
In general, if you can, you should avoid mixing concurrency paradigms. However, sometimes, you have old code that uses GCD and you want to use it, and maybe you can’t or don’t want to modify the old asynchronous code you need to invoke, adapting it to the more modern structured concurrency approach, because it may be part of a library, and you may not have access to the library source code.
withCheckedThrowingContinuation
is a Swift function that bridges between asynchronous code and traditional completion handler-based code. It’s particularly useful when you have an API that uses completion handlers and you want to use it within Swift’s modern async
/await
-structured concurrency model.
The withCheckedThrowingContinuation
function takes as an argument a closure that itself takes a single argument – a continuation. This continuation can be resumed exactly once, either by returning a value with resume...