/in-parallel

A node module for running async tasks on an array and finishing together to run a final function.

Primary LanguageJavaScriptOtherNOASSERTION

in-parallel

A node module for running async tasks on an array and finishing together to run a final function.

Installation

npm install in-parallel --save

Usage

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)
  });

Config

###Debug Messages Debug messages are printed to the console by default but you can choose not have that like so:

	inParallel.config({showDebugMessages:false});

Tests

npm test

Contributing

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.

Release History

  • 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/