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.

43 lines
808 B

# looper
Loop with callbacks but don't RangeError
[![travis](https://travis-ci.org/dominictarr/looper.png?branch=master)
](https://travis-ci.org/dominictarr/looper)
[![testling](http://ci.testling.com/dominictarr/looper.png)
](http://ci.testling.com/dominictarr/looper)
## Synopsis
Normally, if `mightBeAsync` calls it's cb immediately
this would `RangeError`:
``` js
var l = 100000
;(function next () {
if(--l) mightBeAsync(next)
})
```
`looper` detects that case, and falls back to a `while` loop,
## Example
``` js
var loop = require('looper')
var l = 100000
loop(function () {
var next = this
if(--l) probablySync(next)
})()
```
when you want to stop looping, don't call `next`.
`looper` checks if each callback is sync or not,
so you can even mix sync and async calls!
## License
MIT