Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ryanve/often
Async recursive JavaScript timers
https://github.com/ryanve/often
async-recursive-timers javascript timers
Last synced: about 1 month ago
JSON representation
Async recursive JavaScript timers
- Host: GitHub
- URL: https://github.com/ryanve/often
- Owner: ryanve
- License: mit
- Created: 2016-09-29T05:13:00.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2016-10-25T02:12:13.000Z (about 8 years ago)
- Last Synced: 2024-05-02T00:08:43.512Z (7 months ago)
- Topics: async-recursive-timers, javascript, timers
- Language: JavaScript
- Homepage: https://npm.im/often
- Size: 7.81 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# often
Async recursive timers```sh
npm install often --save
``````sh
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](#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
```js
var often = require('often')often(function() {
console.log(new Date)
if ('someCondition') {
this.done()
}
}).wait(1000).start()
```### Limit attempts
```js
var often = require('often')often(function() {
console.info(this)
if (this._trial === 3) {
this.stop()
console.warn(this)
}
}).start(1000).wait(200)
```### Decay task
```js
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
```js
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
```sh
git clone https://github.com/ryanve/often.git
cd often
npm install
npm test
```## License
MIT