Skip to contents

call_mirai waits for the ‘mirai’ to resolve if still in progress, storing the value at $data.

call_mirai_ is a variant that allows user interrupts, suitable for interactive use.

Usage

call_mirai(x)

call_mirai_(x)

Arguments

x

a ‘mirai’ object.

Value

The passed ‘mirai’ (invisibly). The retrieved value is stored at $data.

Details

This function will wait for the asynchronous operation to complete if still in progress (blocking).

The ‘mirai’ updates itself in place, so to access the value of a ‘mirai’ x directly, use call_mirai(x)$data.

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.

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 call_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)
call_mirai(m)$data

# using unresolved()
m <- mirai(
  {
    res <- rnorm(n)
    res / rev(res)
  },
  n = 1e6
)
while (unresolved(m)) {
  cat("unresolved\n")
  Sys.sleep(0.1)
}
str(m$data)

}