interval.js
- /**
- * Source: https://gist.github.com/manast/1185904
- */
- function interval(duration, fn) {
- this.baseline = undefined
-
- this.run = function() {
- if(this.baseline === undefined) {
- this.baseline = new Date().getTime()
- }
- fn()
- var end = new Date().getTime()
- this.baseline += duration
-
- var nextTick = duration - (end - this.baseline)
- if(nextTick < 0) {
- nextTick = 0;
- }
- (function(i) {
- i.timer = setTimeout(function() {
- i.run(end)
- }, nextTick)
- }(this))
- }
-
- this.stop = function() {
- clearTimeout(this.timer)
- }
- }
-
- /*** Usage ***/
-
- var timer = new interval(50, function() {
- console.log(new Date().getTime())
- })
- timer.run()
-
-