often

0.3.2 • Public • Published

often

Async recursive timers

npm install often --save
var often = require('often')

API

often(fn=undefined)

  • Get an often instance with fn as recursion function
  • All methods are chainable

.wait(ms=0)

Set interval to wait between recursions

.start(ms=0)

Start recursing after optional ms delay

.stop()

Immediately stop recursing

.done()

Immediately stop recursing and void instance

.use(fn=undefined)

Replace the recursion function

.clear() internal

Clear active timer

.clean() internal

Nullify properties

.init(fn=undefined) internal

Initialize instance

Properties

  • ._function: fn|null
  • ._recur: boolean|null
  • ._timer: integer|null
  • ._trial: integer|null
  • ._wait: ms|null

Examples

Poll condition

var often = require('often')
 
often(function() {
  console.log(new Date)
  if ('someCondition') {
    this.done()
  }
}).wait(1000).start()

Limit attempts

var often = require('often')
 
often(function() {
  console.info(this)
  if (this._trial === 3) {
    this.stop()
    console.warn(this)
  }
}).start(1000).wait(200)

Decay task

var often = require('often')
 
often(function() {
  if ('Not Ready Yet') {
    this.wait(1000 + this._wait)
    console.info('Slowing down')
  } else {
    console.info('Ready!')
  }
}).start()

Heartbeat

var often = require('often')
var energy = require('energy')
var emitter = energy()
var heartbeat = often(function() {
  emitter.emit('heartbeat')
}).wait(1000).start()
 
emitter.on('heartbeat', function() {
  console.log('I run every second')
})

Develop

git clone https://github.com/ryanve/often.git
cd often
npm install
npm test

License

MIT

Package Sidebar

Install

npm i often

Weekly Downloads

6

Version

0.3.2

License

MIT

Last publish

Collaborators

  • ryanve