I have a set of functions that get dynamically loaded. Each function is in its own file and looks like:
module.exports = function(incomingData, done) {
var test = incomingData + " foo -->"
done(null, test);
};
These are loaded in to an object ('allPluggins') that then looks like:
{ 'test-bar': [Function], 'test-foo': [Function] }
I wish to execute all functions using async.parallel passing the same 'incomingData' variable to each.
So far I have:
async.parallel(allPluggins, done());
Can anyone advise how I can call async.parallel passing in the same 'incomingData' variable to each function?
You could wrap each function or bind() each one. Examples:
Using wrapper functions:
var incomingData = 'hello world';
Object.keys(allPluggins).forEach(function(key) {
var fn = allPluggins[key];
allPluggins[key] = function(done) {
fn(incomingData, done);
};
});
async.parallel(allPluggins, done);
Using bind():
var incomingData = 'hello world';
var key;
for (key in allPluggins)
allPluggins[key] = allPluggins[key].bind(undefined, incomingData);
async.parallel(allPluggins, done);