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