Lightweight, efficient extension of the interval API
npm install intrvl
toExecute
Function. Executes at every intervalintervalMillis
Number. How many milliseconds between executiontimeoutMillis
Number. How long to allow the interval to run before stopping. Leftundefined
, the interval will run without a timeoutmaxExecutionCount
Number. How many times to execute the interval before stopping. Leftundefined
, the interval will run without a max
Returns a new Intrvl
class instance (running by default)
Passed back from the intrvl.setIntrvl
method.
Causes the interval to stop execution, as if a timeout or max had been reached.
var setIntrvl = require('intrvl').setIntrvl;
var interval = setIntrvl(function(){
console.log('Hello, World')
}, 1000); // runs indefinitely
interval.on('stop', function(execCount) {
console.log('Stopped after ' + execCount + ' executions');
});
// ... do some other logic, answer some server requests, etc..
// ... oh no, I need to cancel the interval!
interval.stop();
Emitted on each execution of the interval. Argument is the current execution count
var setIntrvl = require('intrvl').setIntrvl;
var interval = setIntrvl(function(){
console.log('Hello, World');
}, 1000, undefined, 5); // executes every second, stops after 5 executions
interval.on('exec', function(execCount) {
console.log('Execution ' + execCount + ' occured');
});
Emitted when an interval has finished, either by self-imposed limits (timeoutMills, maxExecutionCount), or by calling .stop()
on a running instance. Argument is the total execution count
var setIntrvl = require('intrvl').setIntrvl;
var interval = setIntrvl(function(){
console.log('Hello, World');
}, 1000, undefined, 5); // executes every second, stops after 5 executions
interval.on('stop', function(execCount) {
console.log('Executions: ' + execCount);
});
Using competing configurations
// runs every 1 ms, ends after 100ms or 100 executions, whichever happens first!
var setIntrvl = require('intrvl').setIntrvl;
var intervalMillis = 1;
var timeoutMillis = 100;
var maxExecutionCount = 100;
var interval = setIntrvl(function() {
console.log('Hello, World');
}, intervalMillis, timeoutMillis, maxExecutionCount);
interval.on('stop', function(execCount) {
console.log('ENDED: ' + execCount);
});
Inifinite intrvl still gives us events!
// runs every 1 ms, never ends
// might as well use setInterval at this point, right?
// hold up - we can still have fun with events!
var setIntrvl = require('intrvl').setIntrvl;
var intervalMillis = 1;
var timeoutMillis = undefined;
var maxExecutionCount = undefined;
var interval = setIntrvl(function() {
console.log('Hello, World');
}, intervalMillis, timeoutMillis, maxExecutionCount);
interval.on('exec', function(execCount) {
console.log('Execution count is growing, currently at ' + execCount);
});
interval.on('stop', function(execCount) {
console.log('I\'m never-ending, unless someone else tells me otherwise');
});