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
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
|
|
|