Skip to content

Instantly share code, notes, and snippets.

@gotomypc
Forked from magicalhobo/Timer.js
Last active August 29, 2015 14:06
Show Gist options
  • Save gotomypc/df84bc47ca3a34209aff to your computer and use it in GitHub Desktop.
Save gotomypc/df84bc47ca3a34209aff to your computer and use it in GitHub Desktop.
var events = require('events');
var util = require('util');
var EventEmitter = events.EventEmitter;
function Timer(delay, count)
{
EventEmitter.call(this);
count = parseInt(count)
if(isNaN(count))
{
count = 1
}
delay = parseFloat(delay);
if(isNaN(delay))
{
throw new Error('Delay must be a positive Number.');
}
var currentCount = 0;
var intervalId = -1;
var running = false;
var self = this;
this.__defineGetter__('currentCount', function()
{
return currentCount;
});
this.__defineGetter__('delay', function()
{
return delay;
});
this.__defineSetter__('delay', function(value)
{
delay = value;
if(running)
{
self.stop();
self.start();
}
});
this.reset = function()
{
self.stop();
currentCount = 0;
}
this.start = function()
{
if(!running)
{
running = true;
clearInterval(intervalId);
intervalId = setInterval(callback, delay);
}
}
this.stop = function()
{
if(running)
{
running = false;
clearInterval(intervalId);
}
}
function callback()
{
currentCount++;
self.emit('timer');
if(currentCount >= count)
{
self.emit('timerComplete');
self.reset();
}
}
}
util.inherits(Timer, EventEmitter);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment