[![NPM version][npm-image]][npm-url] [![npm download][download-image]][download-url]
npm install setinterval[![NPM version][npm-image]][npm-url]
[![npm download][download-image]][download-url]
[npm-image]: https://img.shields.io/npm/v/setinterval.svg?style=flat-square
[npm-url]: https://npmjs.org/package/setinterval
[download-image]: https://img.shields.io/npm/dm/setinterval.svg?style=flat-square
[download-url]: https://npmjs.org/package/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.
$ npm i setintervaljs
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
$3
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).$3
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
$3
Stop timer(can be restart again).
Events
$3
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.`js
timer.on('tick', count => {
timer.clearInterval();
});
`$3
Triggered when error thrown from fn.
`js
timer.on('error', e => {
logger.info(e.stack);
});
``