You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					46 lines
				
				1009 B
			
		
		
			
		
	
	
					46 lines
				
				1009 B
			| 
								 
											4 years ago
										 
									 | 
							
								# stdout-stream
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Non-blocking stdout stream
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									npm install stdout-stream
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								[](http://travis-ci.org/mafintosh/stdout-stream)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Rant
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Try saving this example as `example.js`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``` js
							 | 
						||
| 
								 | 
							
								console.error('start');
							 | 
						||
| 
								 | 
							
								process.stdout.write(new Buffer(1024*1024));
							 | 
						||
| 
								 | 
							
								console.error('end');
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								And run the following program
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								node example.js | sleep 1000
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The program will never print `end` since stdout in node currently is blocking - even when its being piped (!).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								stdout-stream tries to fix this by being a stream that writes to stdout but never blocks
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Usage
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								``` js
							 | 
						||
| 
								 | 
							
								var stdout = require('stdout-stream');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								stdout.write('hello\n'); // write should NEVER block
							 | 
						||
| 
								 | 
							
								stdout.write('non-blocking\n')
							 | 
						||
| 
								 | 
							
								stdout.write('world\n');
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`stdout-stream` should behave in the same way as `process.stdout` (i.e. do not end on pipe etc)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## License
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								MIT
							 |