# doUntil > Invoke a function until a test condition is true.
## Usage ```javascript var doUntil = require( '@stdlib/utils/do-until' ); ``` #### doUntil( fcn, predicate\[, thisArg ] ) Invokes a `function` until a `predicate` function returns `true`. Note that the `predicate` function is evaluated **after** executing `fcn`; thus, `fcn` **always** executes at least once. ```javascript function predicate( i ) { return ( i >= 5 ); } function beep( i ) { console.log( 'boop: %d', i ); } doUntil( beep, predicate ); /* => boop: 0 boop: 1 boop: 2 boop: 3 boop: 4 */ ``` Both the `predicate` function and the `function` to invoke are provided a single argument: - `i`: iteration number (starting from zero) To set the function execution context for the invoked function, provide a `thisArg`. ```javascript function predicate( i ) { return ( i >= 5 ); } function count() { this.count += 1; } var context = { 'count': 0 }; doUntil( count, predicate, context ); console.log( context.count ); // => 5 ```
## Examples ```javascript var randu = require( '@stdlib/random/base/randu' ); var doUntil = require( '@stdlib/utils/do-until' ); function predicate() { return ( randu() <= 0.05 ); } function log( i ) { console.log( i ); } doUntil( log, predicate ); ```