# while > Invoke a function while a test condition is true.
## Usage ```javascript var whilst = require( '@stdlib/utils/while' ); ``` #### whilst( predicate, fcn\[, thisArg ] ) Invokes a `function` until a `predicate` function returns `false`. ```javascript function predicate( i ) { return ( i < 5 ); } function beep( i ) { console.log( 'boop: %d', i ); } whilst( predicate, beep ); /* => 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 }; whilst( predicate, count, context ); console.log( context.count ); // => 5 ```
## Examples ```javascript var randu = require( '@stdlib/random/base/randu' ); var whilst = require( '@stdlib/utils/while' ); function predicate() { return ( randu() > 0.05 ); } function log( i ) { console.log( i ); } whilst( predicate, log ); ```