google / promises

Promises is a modern framework that provides a synchronization construct for Swift and Objective-C.
Apache License 2.0
3.79k stars 292 forks source link

How to block until promise completes? #178

Open ericsonggg opened 2 years ago

ericsonggg commented 2 years ago

I have a use case that needs to use Promises, but the old calling code is synchronous. In Swift, is there a way to block the synchronous caller to wait for the promise to finish? I don't think I can use a custom dispatch queue since it needs to execute on the main thread.

Callback methods unfortunately do not work since the promise needs to start and complete at the middle of a long chain of synchronous commands.

shoumikhin commented 2 years ago

Hi Eric, you can try awaitPromise or that https://github.com/google/promises/blob/master/g3doc/index.md#awaitpromise

ericsonggg commented 2 years ago

Is there a different import for awaitPromise? It seems to not be included in import Promises

ericsonggg commented 2 years ago

also, is awaitPromise only usable from within another Promise? If I'm executing code on the main thread, I'd like to block that immediately for a return from a promise on a different thread. If I have to create a new Promise on main to block on an existing promise, that new Promise will not be able to execute until all the main thread processing is complete