{{alias}}( predicate, x, y, done ) If a predicate function returns a truthy value, invokes `x`; otherwise, invokes `y`. The predicate function is provided a single argument: - clbk: callback to invoke upon predicate function completion The predicate function callback accepts two arguments: - error: error object - bool: condition used to determine whether to invoke `x` or `y` Both `x` and `y` are provided a single argument: - clbk: callback to invoke upon function completion The callback function accepts any number of arguments, with the first argument reserved for providing an error. If the error argument is falsy, the `done` callback is invoked with its first argument as `null` and all other provided arguments. If the error argument is truthy, the `done` callback is invoked with only an error argument. Execution is *not* guaranteed to be asynchronous. To guarantee asynchrony, wrap the `done` callback in a function which either executes at the end of the current stack (e.g., `nextTick`) or during a subsequent turn of the event loop (e.g., `setImmediate`, `setTimeout`). Parameters ---------- predicate: Function Predicate function. x: Function Function to invoke if a condition is truthy. y: Function Function to invoke if a condition is falsy. done: Function Callback to invoke upon completion. Examples -------- > function predicate( clbk ) { ... setTimeout( onTimeout, 0 ); ... function onTimeout() { ... clbk( null, false ); ... } ... }; > function x( clbk ) { ... setTimeout( onTimeout, 0 ); ... function onTimeout() { ... clbk( null, 'beep' ); ... } ... }; > function y( clbk ) { ... setTimeout( onTimeout, 0 ); ... function onTimeout() { ... clbk( null, 'boop' ); ... } ... }; > function done( error, result ) { ... if ( error ) { ... throw error; ... } ... console.log( result ); ... }; > {{alias}}( predicate, x, y, done ) 'boop' See Also --------