waitfor-condition

A simple utility that waits until a custom condition is met or until timeout.

Usage no npm install needed!

<script type="module">
  import waitforCondition from 'https://cdn.skypack.dev/waitfor-condition';
</script>

README

waitfor-condition

A simple utility that resolves a promise when a custom condition is met or until timeout.

Example

The following example will start a wiremock server and continue only when it is started properly.

var waitForCondition = require('waitfor-condition');
var request = require('request');
var child_process = require('child_process');

child_process.exec('java -jar ./lib/wiremock-standalone.jar --your-options', 
    function() {
        waitForCondition(function (cb) {
            request('http://localhost:1235/service/your-mock-service', function (error, response) {
                cb(!error && response.statusCode === 200);
            });
        }).then(function() {
            // wiremock started, continue...
        });
    }
);

Options

There are two ways to invoke waitfor-condition:

Basic:

waitForCondition(function(cb) { /* cb(condition satisfied boolean)  */ }, [timeoutMs], [intervalMs])

Config object:

waitForCondition({
  before: function() { },
  condition: function(cb) { /* cb(condition satisfied boolean)  */},
  after: function(succes) { },
  interval: 500ms, // default is 500
  timeout: 60000ms, // default is 1 minute
  verbose: false, // default is true (false silences logging)
})