simpleitjs
Version:
Simple light frontend framework
66 lines (65 loc) • 2.01 kB
JavaScript
;
var Ticker = /** @class */ (function () {
function Ticker(attr) {
this.id = attr.id;
this.interval = attr.interval;
this.callback = attr.callback;
this.nxtTick = attr.nxtTick;
}
/**
* Registers a tick, callbacks given function per interval.
* @param {number} interval in miliseconds
* @param {Function} callback function to execute
*/
Ticker.getTick = function (interval, callback) {
var id = Ticker.currId;
Ticker.currId++;
Ticker.ticks.push(new Ticker({
id: id,
interval: interval,
callback: callback,
nxtTick: new Date().getTime() + interval
}));
return id;
};
/**
* Removes a registered tick.
* @param {number} interval in miliseconds
* @param {Function} callback function to execute
*/
Ticker.removeTick = function (id) {
var index = -1;
for (var i = 0; i < Ticker.ticks.length; i++) {
if (Ticker.ticks[i].id == id) {
index = i;
break;
}
}
if (index != -1) {
Ticker.ticks.splice(index, 1);
}
};
Ticker.initDate = new Date();
Ticker.currId = 0;
Ticker.ticks = [];
return Ticker;
}());
(function () {
setInterval(function () {
var currTime = new Date().getTime();
for (var i = 0; i < Ticker.ticks.length; i++) {
if (Ticker.ticks[i].nxtTick < currTime) {
Ticker.ticks[i].nxtTick = currTime + Ticker.ticks[i].interval;
Ticker.ticks[i].callback();
}
}
}, 100);
if (typeof window !== "undefined") {
var win = window;
win.SimpleJS = win.SimpleJS || {};
win.SimpleJS.Ticker = Ticker;
}
})();
if (typeof module != "undefined" && typeof module.exports != "undefined") {
module.exports = Ticker;
}