runRace: Run a list of functions as race

Description Usage Arguments Details Value See Also Examples

Description

runRace runs its input tasks parallel until the very first return of any of its tasks and returns either a named list (all NULL but one and on error NULL) or the value of a given callback.

Usage

1
runRace(tasks = list(NULL), cb = NULL)

Arguments

tasks

List of functions (anonymous and named) required.

cb

Anonymous or named function with signature cb(error, data) optional.

Details

If an error is encountered while calling the tasks without a callback runRace immediately stops execution and returns NULL. If an error is encountered and a callback is defined runRace immediately stops execution and calls the callback with the data parameter set to NULL and the error parameter set to the encountered error. Thus, the callback will always have only one non-NULL argument. Within the callback simply check for an error with is.null(error). If the error object is not NULL it has a property $task indicating the function that failed.

Value

If cb is NULL the tasks' return values are returned in a named list (on error NULL). If cb is a function it is called upon completion of all tasks and gets passed an error value (default NULL) as first parameter and a named list of the tasks' return values (on error NULL) as second parameter.

See Also

runSeries runWaterfall runParallel

Examples

1
2
3
4
5
6
7
8
9
## Not run: 
callback <- function(err, d) {
  if (is.null(err)) d else stop(err, err$task)
}
runRace(list(function() {Sys.sleep(11L); return('first first')},
             function() {Sys.sleep(10L); return('second first')}),
        callback)

## End(Not run)

chiefbiiko/runr documentation built on May 28, 2019, 7:17 p.m.