|
|
|
|
|
by b2gills
2442 days ago
|
|
Raku has `await` but it doesn't need `async`. sub foo ( Int \n where 1..100 ) {
# ___ start is a prefix operator that creates a Promise
# V
start { sleep n.rand; (1..n).pick }
}
my $result = foo(10);
say $result.status; # Planned
say await $result; # 6 (after a delay)
# this is nearly identical to foo above
sub bar ( Int \n where 1..100 ) {
Promise.in( n.rand ).then({ (1..n).pick })
}
(Note that `start` does not need a block unless you are grouping more than one statement as I have above.)There are combinators like `Promise.allof` and `Promise.anyof`. You usually don't need to use `Promise.allof`, because you can use `await` on a list. my @promises = Promise.in(1.rand) xx 10;
my @results = await @promises;
(Note that the left side of `xx` is _thunky_ so there are ten different Promises with ten different random wait times.)--- You should see the `react`/`supply` and `whenever` feature. |
|