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.
58 lines
1.3 KiB
58 lines
1.3 KiB
5 years ago
|
'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;
|