collect_mirai {mirai} | R Documentation |
mirai (Collect Value)
Description
collect_mirai
waits for the ‘mirai’ to resolve if still in
progress, and returns its value directly. It is a more efifcient version
of and equivalent to call_mirai(x)$data
.
Usage
collect_mirai(x)
Arguments
x |
a ‘mirai’ object, or list of ‘mirai’ objects. |
Details
This function will wait for the asynchronous operation(s) to complete if still in progress (blocking), and is not interruptible.
x[]
may be used to wait for and return the value of a mirai
x
, and is the user-interruptible counterpart to
collect_mirai(x)
.
Value
An object (the return value of the ‘mirai’), or a list of such objects (the same length as ‘x’, preserving names).
Alternatively
The value of a ‘mirai’ may be accessed at any time at
$data
, and if yet to resolve, an ‘unresolved’ logical NA
will be returned instead.
Using unresolved
on a ‘mirai’ returns TRUE only if
it has yet to resolve and FALSE otherwise. This is suitable for use in
control flow statements such as while
or if
.
Errors
If an error occurs in evaluation, the error message is returned as a
character string of class ‘miraiError’ and ‘errorValue’
(the stack trace is available at $stack.trace
on the error
object). is_mirai_error
may be used to test for this.
If a daemon crashes or terminates unexpectedly during evaluation, an
‘errorValue’ 19 (Connection reset) is returned (when not using
dispatcher or using dispatcher with retry = FALSE
). Otherwise,
using dispatcher with retry = TRUE
, the mirai will remain
unresolved and is automatically re-tried on the next daemon to connect to
the particular instance. To cancel the task instead, use
saisei(force = TRUE)
(see saisei
).
is_error_value
tests for all error conditions including
‘mirai’ errors, interrupts, and timeouts.
Examples
if (interactive()) {
# Only run examples in interactive R sessions
# using collect_mirai()
df1 <- data.frame(a = 1, b = 2)
df2 <- data.frame(a = 3, b = 1)
m <- mirai(as.matrix(rbind(df1, df2)), df1 = df1, df2 = df2, .timeout = 1000)
collect_mirai(m)
# using x[]
m[]
}