Awaitable Utils
4387 Views
-
using { /Verse.org/Concurrency } using { /Verse.org/Simulation } # Awaits the event and returns its payload or false if the timeout elapses first. (Awaitable:awaitable(t) where t:type).AwaitWithTimeout<public>(TimeoutSeconds:float)<suspends>:?t = race: block: Payload := Awaitable.Await() return option{Payload} Sleep(TimeoutSeconds) return false # Waits until the event is not signaled for the given timeout period. (Awaitable:awaitable(any)).AwaitUntilIdle<public>(TimeoutSeconds:float)<suspends>:void = loop: race: block: Payload := Awaitable.Await() block: Sleep(TimeoutSeconds) return # Continuously awaits a matching signal and invokes provided callback using received payload. (Awaitable:awaitable(t)).ListenAndCall<public>(Callback:type{_(:t):void} where t:type)<suspends>:void = loop: Payload := Awaitable.Await() Callback(Payload)
You're reading a preview
The full reference is free for BrainDeadGuild Discord members — sign in to read it all, or open the original at the source.
Sign in with your BrainDead.TV / BrainDeadGuild Discord account for full access.