Next: Let-On, Previous: Facet, Up: actor-lib: A standard library of sorts [Contents][Index]
The (goblins actor-lib joiners)
module provides a means of
combining the results of many promises.
Return a promise which resolves on resolution of all promises.
As an example, suppose there is an actor which waits for a period of time before returning whatever it received:
> (define (^procrastinator bcom delay) (lambda (x) (sleep delay) x))
all-of
can wait for all procrastinators to finish before
writing some output:
> (define a-vat (spawn-vat)) > (define b-vat (spawn-vat)) > (define c-vat (spawn-vat)) > (define p1 (with-vat b-vat (spawn ^procrastinator 1))) > (define p2 (with-vat c-vat (spawn ^procrastinator 2))) > (with-vat a-vat (on (all-of (<- p1 'foo) (<- p2 'bar)) (lambda (items) (display items) (newline)))) ; (foo bar)
Like all-of
, but promises is a list of promises.