Skip to content

🕙 Simple timers utility library with api (mostly) inspired by .NET equivalents.

License

Notifications You must be signed in to change notification settings

afractal/SharpTimer

Repository files navigation

SharpTimer

CircleCI GPR npm version npm

Examples

Timer example

Initializing a new timer and specifying an iterval of 5 min, specify the interval in seconds:

let timer = new Timer(60 * 5);

Register an interval elapsing event handler:

timer.onIntervalElapsing(i => {
    console.log(`remaing time in seconds: ${i}`);
    console.log(`time is elapsing: ${timer.toString()}`);
});

Register an interval elapsed event handler.

timer.onIntervalElapsed(() => {
    timer.stop();
    console.log('time completely elapsed');
});

Finally, call the start instance method.

timer.start();

Stopwatch example

Initializing a new Stopwatch by calling the ctor

let stopwatch = new Stopwatch();

stopwatch.start();

or the static startNew function

let stopwatch = Stopwatch.startNew();

Remember to call dispose on the stopwatch after your done with that instance:

const intervalId = setInterval(() => {
    console.log(`elapsedMilliseconds: ${stopwatch.elapsedMilliseconds}`);
}, 10);

setTimeout(() => {
    clearInterval(intervalId);
    stopwatch.dispose();
}, 100);

Timespan example

Constructs a Timespan object by calling of its static functions

const {
    days,
    hours,
    minutes,
    seconds,
    milliseconds
} = Timespan.fromDays(3);

and access its instance properties

console.log(`milliseconds: ${milliseconds}`); // 259200000
console.log(`seconds: ${seconds}`); // 259200
console.log(`minutes: ${minutes}`); // 4320
console.log(`hours: ${hours}`); // 72
console.log(`days: ${days}`); // 3

Changes

v0.2.*

  • cleanup codebase
  • switch to jest
  • add circle ci
  • remove unnecessary ci's
  • add github package registry support

v0.1.*

  • timer feature
  • stopwatch feature
  • timespan feature
  • type definitions
  • tests for timer, stopwatch and timespan

License

This product is licensed under ther MIT license.


made with ❤️ by me