Transform stream for Node.js that allows you to run your transforms in parallel without changing the order of the output.
npm install parallel-transform
It is easy to use
vartransform=require('parallel-transform');varstream=transform(10,function(data,callback){// 10 is the parallism levelsetTimeout(function(){callback(null,data);},Math.random()*1000);});for(vari=0;i<10;i++){stream.write(''+i);}stream.end();stream.on('data',function(data){console.log(data);// prints 0,1,2,...});stream.on('end',function(){console.log('stream has ended');});If you run the above example you'll notice that it runs in parallel (does not take ~1 second between each print) and that the order is preserved
All transforms are Node 0.10 streams. Per default they are created with the options {objectMode:true}.
If you want to use your own stream options pass them as the second parameter
varstream=transform(10,{objectMode:false},function(data,callback){// data is now a buffercallback(null,data);});fs.createReadStream('filename').pipe(stream).pipe(process.stdout);Passing the option {ordered:false} will output the data as soon as it's processed by a transform, without waiting to respect the order.
MIT