Repeatedly call task until it its test function returns TRUE

async_until(test, task, ...)

Arguments

test

Synchronous test function.

task

Asynchronous function to call repeatedly.

...

Arguments to pass to task.

Value

Deferred value, that is resolved when the iteration is done.

See also

Examples

## Keep calling until it "returns" a number less than < 0.1
calls <- 0
number <- Inf
synchronise(async_until(
  function() number < 0.1,
  function() {
    calls <<- calls + 1
    number <<- runif(1)
  }
))
#> [1] 0.06521611
calls
#> [1] 10