You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iotcat
74338fbb93
|
5 years ago | |
---|---|---|
.. | ||
.travis.yml | 5 years ago | |
LICENSE | 5 years ago | |
README.md | 5 years ago | |
bench.js | 5 years ago | |
package.json | 5 years ago | |
retimer.js | 5 years ago | |
test.js | 5 years ago |
README.md
retimer
reschedulable setTimeout for you node needs. This library is built for building a keep alive functionality across a large numbers of clients/sockets.
Rescheduling a 10000 functions 20 times with an interval of 50ms (see
bench.js
), with 100 repetitions:
benchSetTimeout*100
: 51867msbenchRetimer*100
: 34237ms
Install
npm install retimer --save
Example
var retimer = require('retimer')
var timer = retimer(function () {
throw new Error('this should never get called!')
}, 20)
setTimeout(function () {
timer.reschedule(50)
setTimeout(function () {
timer.clear()
}, 10)
}, 10)
API
retimer(callback, timeout, [...args])
Exactly like your beloved setTimeout
.
Returns a Retimer object
timer.reschedule(timeout)
Reschedule the timer, if the specified timeout comes after the original timeout.
Returns true if successful, false otherwise
timer.clear()
Clear the timer, like your beloved clearTimeout
.
How it works
Timers are stored in a Linked List in node.js, if you create a lot of timers this Linked List becomes massive which makes removing a timer an expensive operation. Retimer let the old timer run at its time, and schedule a new one accordingly.
License
MIT