asyncreduce
v0.1.4
Published
Reduce an array of values via an asynchronous function.
Downloads
8,901
Readme
asyncreduce
Reduce an array of values via an asynchronous function.
var fs = require('fs');
var path = require('path');
var asyncReduce = require('asyncreduce);
asyncReduce(
[ '.gitignore', '.jshintrc', '.travis.yml', 'index.js', 'Readme.md' ]
, {}
, function size (acc, file, cb) {
var p = path.join(__dirname, '..', file);
fs.stat(p, function (err, stat) {
if (err) return cb(err);
acc[file] = stat.size;
cb(null, acc);
});
}
, function done (err, acc) {
if (err) return console.error(err);
console.log('sizes:\n', acc);
}
);
Features
- super small library built on top of also quite small runnel
- since runnel
try/catch
es and bubbles errors and reports with detailed stack traces, so does asyncreduce
Installation
npm install asyncreduce
In the browser
With browserify
You are all good.
Without browserify
Two options:
- run browserify --standalone after installing this package via npm
- TODO: browserify-cdn
API
function asyncReduce (items, seed, iterator, done)
/**
* Calls provided async iterator function with the accumulator and each item.
* When all items have been iterated over calls done with a possible error or the final value of the accumulator.
*
* @name exports
* @function
* @param items {Array} the items to be reduced
* @param seed {T} the initial value that can be of any type and is passed along as the accumulator (acc) each time the iterator is called
* @param iterator {Function} function (acc, item, callback) {} - the iterator called for each item
* @param done {Function} function (err, acc) {} - called with final accumulated value or an error if one occurred
*/
License
MIT