54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # parallel-transform
 | |
| 
 | |
| [Transform stream](http://nodejs.org/api/stream.html#stream_class_stream_transform_1) 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
 | |
| 
 | |
| ``` js
 | |
| var transform = require('parallel-transform');
 | |
| 
 | |
| var stream = transform(10, function(data, callback) { // 10 is the parallism level
 | |
| 	setTimeout(function() {
 | |
| 		callback(null, data);
 | |
| 	}, Math.random() * 1000);
 | |
| });
 | |
| 
 | |
| for (var i = 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
 | |
| 
 | |
| ## Stream options
 | |
| 
 | |
| 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
 | |
| 
 | |
| ``` js
 | |
| var stream = transform(10, {objectMode:false}, function(data, callback) {
 | |
| 	// data is now a buffer
 | |
| 	callback(null, data);
 | |
| });
 | |
| 
 | |
| fs.createReadStream('filename').pipe(stream).pipe(process.stdout);
 | |
| ```
 | |
| 
 | |
| ### Unordered
 | |
| Passing the option `{ordered:false}` will output the data as soon as it's processed by a transform, without waiting to respect the order.
 | |
| 
 | |
| ## License
 | |
| 
 | |
| MIT |