promise_reduce | R Documentation |
Similar to purrr::reduce
(left fold), but the function .f
is permitted
to return a promise. promise_reduce
will wait for any returned promise to
resolve before invoking .f
with the next element; in other words, execution
is serial. .f
can return a promise as output but should never encounter a
promise as input (unless .x
itself is a list of promises to begin with, in
which case the second parameter would be a promise).
promise_reduce(.x, .f, ..., .init)
.x |
A vector or list to reduce. (Not a promise.) |
.f |
A function that takes two parameters. The first parameter will be
the "result" (initially |
... |
Other arguments to pass to |
.init |
The initial result value of the fold, passed into |
A promise that will resolve to the result of calling .f
on the last
element (or .init
if .x
had no elements). If any invocation of .f
results in an error or a rejected promise, then the overall
promise_reduce
promise will immediately reject with that error.
# Returns a promise for the sum of e1 + e2, with a 0.5 sec delay
slowly_add <- function(e1, e2) {
promise(~later::later(~resolve(e1 + e2), delay = 0.5))
}
# Prints 55 after a little over 5 seconds
promise_reduce(1:10, slowly_add, .init = 0) %...>% print()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.