#async-reduce
reduce function for async reductions on arrays.
##Examples
var reduce = require('async-reduce')
function sum(a, b, cb) {
setTimeout(function() {
cb(null, a + b)
})
}
reduce([1, 2, 3], 1, sum, function(err, result) {
result.should.equal(7)
})Concurrent reductions are also supported
var reduce = require('async-reduce').concurrent(2, 0, function(a, b) {
return a + b
})
reduce([1, 2, 3], 1, sum, function(err, result) {
result.should.equal(7) // still the same result
})During such reduction the given array is split into several
chunks with the total number of chunks equal to the concurrency level (it is
the first arg to .concurrent()).
Those chunks are reduced in parallel. That means that we need a
combine function to assemble the results from those independent reductions
(third arg). We also need some sort of unit value to seed our
reductions (second arg). But we can omit unit and combine
if we are only interested in side effects:
var reduce = require('async-reduce').concurrent(5)
var items = []
reduce([1, 2, 3], null, function(_, item, cb) {
items.push(item)
cb()
}, function(err) {
items.should.include(1)
items.should.include(2)
items.should.include(3)
})This lib takes care of sync callback calls. They do not cause stack overflows.
##Installation
via component
component install eldargab/async-reduce
via npm
npm install async-reduce
##License
MIT