time-to-botec/squiggle/node_modules/@stdlib/utils/do-until
NunoSempere b6addc7f05 feat: add the node modules
Necessary in order to clearly see the squiggle hotwiring.
2022-12-03 12:44:49 +00:00
..
docs feat: add the node modules 2022-12-03 12:44:49 +00:00
lib feat: add the node modules 2022-12-03 12:44:49 +00:00
package.json feat: add the node modules 2022-12-03 12:44:49 +00:00
README.md feat: add the node modules 2022-12-03 12:44:49 +00:00

doUntil

Invoke a function until a test condition is true.

Usage

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.

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.

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

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 );