You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

57 lines
1.3 KiB

'use strict'
function ReInterval (callback, interval, args) {
var self = this;
this._callback = callback;
this._args = args;
this._interval = setInterval(callback, interval, this._args);
this.reschedule = function (interval) {
// if no interval entered, use the interval passed in on creation
if (!interval)
interval = self._interval;
if (self._interval)
clearInterval(self._interval);
self._interval = setInterval(self._callback, interval, self._args);
};
this.clear = function () {
if (self._interval) {
clearInterval(self._interval);
self._interval = undefined;
}
};
this.destroy = function () {
if (self._interval) {
clearInterval(self._interval);
}
self._callback = undefined;
self._interval = undefined;
self._args = undefined;
};
}
function reInterval () {
if (typeof arguments[0] !== 'function')
throw new Error('callback needed');
if (typeof arguments[1] !== 'number')
throw new Error('interval needed');
var args;
if (arguments.length > 0) {
args = new Array(arguments.length - 2);
for (var i = 0; i < args.length; i++) {
args[i] = arguments[i + 2];
}
}
return new ReInterval(arguments[0], arguments[1], args);
}
module.exports = reInterval;