setinterval
v0.2.4
Published
[![NPM version][npm-image]][npm-url] [![npm download][download-image]][download-url]
Downloads
3,867
Readme
setinterval
We all know the drawbacks of the built-in setInterval
in Node.js(actually js itself).
It's more reasonable to start measuring period after every async task gets done. So here it is.
Install
$ npm i setinterval
Example
const Timer = require('setinterval');
const t = new Timer(async () => {
const user = await db.User.get(id);
console.log(user);
}, 1000);
// start timer
t.setInterval();
// after some time...
// clear timer
t.clearInterval();
API
new Timer(fn, period)
Timer constructor.
Params:
- fn(required): function executed after every
period
. Should be a Promise or async function or generator function or thunk. - period(required): timer period(units: milliseconds).
setInterval([initialDelay], [invokeImmediate])
Start timer after a certain delay(defaults to 0) and can decide if invoke immediately(defaults to false).
Params:
- initialDelay(optional): Delay period(units: milliseconds) before timer gets triggered. default: 0
- invokeImmediate(optional): specify if the timer function invoke immediately.default: false
clearInterval()
Stop timer(can be restart again).
Events
tick
Triggered each time fn is finished, whenever a error is thrown. You can cancel the timer in this event. A count
parameter is passed in the event handler which stands for how many times fn has been called.
timer.on('tick', count => {
timer.clearInterval();
});
error
Triggered when error thrown from fn.
timer.on('error', e => {
logger.info(e.stack);
});
License
MIT