Files
ghbot/lib/timers.js
2017-08-03 07:41:30 -07:00

38 lines
1001 B
JavaScript
Executable File

const util = require('util'),
emitter = require('events').EventEmitter;
function Timers()
{
let self = this;
emitter.call(self);
self.once = (forTimestamp, eventName) => {
// figure out ms between now and scheduled time
// setTimeout for event to be fired at that time
let diff = forTimestamp - Date.now();
if (diff < 0) return;
setTimeout(() => {self.emit(eventName)}, diff);
return self;
};
self.repeat = (intervalSeconds, eventName) => {
setInterval(() => {self.emit(eventName)}, intervalSeconds*1000);
return self;
};
self.onceAndRepeat = (forTimestamp, intervalSeconds, eventName) => {
let diff = forTimestamp - Date.now();
if (diff < 0) return self;
setTimeout(() => {
self.emit(eventName);
self.repeat(intervalSeconds, eventName);
}, diff);
return self;
};
}
util.inherits(Timers, emitter);
module.exports = new Timers();