timer

1.0.1 • Public • Published

this package provides a utility function to promisify and unify setTimeout and setInterval functions.

It also provides a comfortable way to chain multiple setTimeouts with different timeouts and even a finally setInterval with the same callback.

An additional feature is the auto interval function which applies a simple setInterval which triggers at event time slots, ie if you call the timer.auto function with an interval of 15601000 (15 minutes) your callback will be triggered at 00:15:00, 00:30:00, and so on.

USAGE EXAMPLE (JAVASCRIPT):

// as a promise in order to delay execution
await timer(300);

// use timer with Promise.race to define timeouts:
// timer.timeout will reject the promise after the given timeout
Promise.race( [otherPromise, timer.timeout(400)] );


// simple setTimeout
// same as setTimeout( cb, 200);
timer(200, cb);


// setTimeout with same callback after 200ms and after 400ms
// the second array element is also 200ms because it is set up after the first one (200ms+200ms = 400ms)
timer( [200,200], cb );
// same as 
// setTimeout( 200, cb );
// setTimeout( 400, cb );

// simple setInterval
timer.interval(2000,cb);
// same as setInterval(cb,2000);

// setting up a interval after a timeout
timer(500,2000,cb);
// this one will trigger cb after:
//  500ms, 2500ms, 4500ms, 6500ms, ...


// auto slot a interval (for example if you want your callback to be triggered at 00:15:00, 00:30:00, ..)
timer.auto(15*60*1000, cb);




// clearing a timeout:
o = timer(500,cb);
o.clear();

// if you use the clear() function on a timer with multiple timeouts or intevals, ALL of them will be cleared,
// so your callback won't be triggered any more

USAGE EXAMPLE (COFFEESCRIPT):

# with coffeescript the utility functions are even more handy

timer 200, -> console.log 'hello'

timer [500,200], -> console.log 'hello after 500ms and 700ms'

# BONG every 30min at even time slots (0:00, 0:30, ..)
{clear} = timer.auto 30*60*1000, -> console.log 'BONG'
# end the BONG interval after 5h
timer 5*60*60*1000, clear

QUESTIONS or feedback? you are welcome, send me an email at sieber.m@gmail.com

Package Sidebar

Install

npm i timer

Weekly Downloads

153

Version

1.0.1

License

ISC

Unpacked Size

16.6 kB

Total Files

11

Last publish

Collaborators

  • markussieber