Page
Library
Module
Module type
Parameter
Class
Class type
Source
Kcas_data.Promise
SourceA promise of a value to be resolved at some point in the future.
Example:
# let promise, resolver = Promise.create () in
let domain = Domain.spawn @@ fun () ->
Printf.printf "Got %d\n%!" (Promise.await promise)
in
Promise.resolve resolver 42;
Domain.join domain
Got 42
- : unit = ()
The type of a promise of a value of type 'a
.
The type of a resolver of a value of type 'a
.
The type of a promise of a result of type ('a, exn) result
.
create ()
returns a new unresolved pair of a promise and a resolver for the promise.
create_resolved x
returns a promise that is already resolved to the given value x
.
resolve u v
resolves the promise corresponding to the resolver u
to the value v
. Any awaiters of the corresponding promise are then unblocked.
await t
either immediately returns the resolved value of the promise t
or blocks until the promise t
is resolved.
peek t
immediately returns either the resolved value of the promise t
or None
in case the promise hasn't yet been resolved.
is_resolved t
determines whether the promise t
has already been resolved.
await_exn t
is equivalent to match await t with v -> v | exception e -> raise e
.
resolve_ok u v
is equivalent to resolve u (Ok v)
.