fnlimit
v0.0.4
Published
A way to limit the number of times a function is called in parallel
Downloads
2
Maintainers
Readme
FnLimit
A bit of code that will limit and iterate a function call.
Install
npm install fnlimit
npm install ben-bradley/fnlimit
Example
Iterating a specified number of times
var fnlimit = require('../');
var i = 0;
fnlimit({
times: 20,
limit: 6,
progress: true, // optional
callback: function (next) {
setTimeout(function () {
next();
}, 1000);
},
done: function (err) {
console.log('All done!');
}
});
Iterating a list of items
var fnlimit = require('../');
var i = 0;
fnlimit({
limit: 3,
list: [ 1, 2, 3, 4, 5, 6 ],
progress: true, // optional
callback: function (item, next) {
setTimeout(function () {
console.log(item); // => 1, 2, 3, ...
next(err, 'a result!');
}, 1000);
},
done: function (err) {
console.log('All done!');
}
});
Options
times
- (Number) The number of times that you want to call thecallback
.limit
- (Number) The number ofcallback
s to run at the same time.list
- (Array) A list of items to provide to thecallback
. If specified, each item is injected intocallback
as the first argument andnext()
becomes the second arg.progress
- (Boolean|Array, optional) Iftrue
, then it will display the default progress bar with each call ofnext()
. Alternatively, you can provide an array of arguments to send toProgressBar()
using
fnlimit({
times: 20,
limit: 6,
// see https://github.com/visionmedia/node-progress#tokens
progress: [ '[:bar] :percent', { width: 80 } ], // or progress: true,
callback: function (next) {
setTimeout(function () {
next();
}, 1000);
},
done: function (err) {
console.log('All done!');
}
});
callback
- (Function) The function to iterate. Provides anext
function called within thecallback
to iterate correctly.done
- (Function) The function to call when all iterations are complete. Provides an error which is passed through if provided tonext
.
Versions
- 0.0.4 - Modified
next()
to accept results and pass them todone()
- 0.0.3 - Added
list
option to inject an item intocallback
- 0.0.2 - Added custom progress bar option
- 0.0.1 - Initial drop