A node module for running async tasks on an array and finishing together to run a final function.
npm install in-parallel --save
Initialize inParallel like so:
//the proceedAfterParallelAction() method is provided
var inParallel = require('in-parallel');
###A Simple Example
var collection = [1,2,3];
inParallel.run(collection, function(element){
element++;
collection.proceedAfterInParallelAction();
}, function(){
collection.push(5);
});
###A Less Simple Example With MongoDB Queries Imagine you have a bunch of users and each user has a bunch of photos all stored in a mongodb. If you have to get each user's photo and do something with them, it'd probably be best to run such tasks in parallel:
//a less simple use case with a MongoDB query
var users = [user1,user2,user3];
inParallel.run(users, function(user){
//find the user's photos
db.collection(PHOTOS_COLLECTION).findOne(searchQuery,function(err, doc) {
if(err || !doc) {
//handle the error
if(err) console.log("Failed to find one doc: " + err.message);
//call the provided proceed method after this user is done
users.proceedAfterInParallelAction();
} else {
//find succeeded
//do something with the result
//call the provided proceed method after this user is done
users.proceedAfterInParallelAction();
}
});
}, function(){
//everything is done
//do something afterwards
console.log("FINISHED!");
}, function(err){
//error. handle it
console.log(err.message)
});
###Debug Messages Debug messages are printed to the console by default but you can choose not have that like so:
inParallel.config({showDebugMessages:false});
npm test
In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code.
- 0.1.0 Initial release
##Credits I used this article to learn how to publish npm articles: https://quickleft.com/blog/creating-and-publishing-a-node-js-module/