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.
		
		
		
		
		
			
		
			
				
					65 lines
				
				1.6 KiB
			
		
		
			
		
	
	
					65 lines
				
				1.6 KiB
			| 
											3 years ago
										 | #through
 | ||
|  | 
 | ||
|  | [](http://travis-ci.org/dominictarr/through) | ||
|  | [](https://ci.testling.com/dominictarr/through) | ||
|  | 
 | ||
|  | Easy way to create a `Stream` that is both `readable` and `writable`.  | ||
|  | 
 | ||
|  | * Pass in optional `write` and `end` methods. | ||
|  | * `through` takes care of pause/resume logic if you use `this.queue(data)` instead of `this.emit('data', data)`. | ||
|  | * Use `this.pause()` and `this.resume()` to manage flow. | ||
|  | * Check `this.paused` to see current flow state. (`write` always returns `!this.paused`). | ||
|  | 
 | ||
|  | This function is the basis for most of the synchronous streams in  | ||
|  | [event-stream](http://github.com/dominictarr/event-stream). | ||
|  | 
 | ||
|  | ``` js | ||
|  | var through = require('through') | ||
|  | 
 | ||
|  | through(function write(data) { | ||
|  |     this.queue(data) //data *must* not be null | ||
|  |   }, | ||
|  |   function end () { //optional | ||
|  |     this.queue(null) | ||
|  |   }) | ||
|  | ``` | ||
|  | 
 | ||
|  | Or, can also be used _without_ buffering on pause, use `this.emit('data', data)`, | ||
|  | and this.emit('end') | ||
|  | 
 | ||
|  | ``` js | ||
|  | var through = require('through') | ||
|  | 
 | ||
|  | through(function write(data) { | ||
|  |     this.emit('data', data) | ||
|  |     //this.pause()  | ||
|  |   }, | ||
|  |   function end () { //optional | ||
|  |     this.emit('end') | ||
|  |   }) | ||
|  | ``` | ||
|  | 
 | ||
|  | ## Extended Options
 | ||
|  | 
 | ||
|  | You will probably not need these 99% of the time. | ||
|  | 
 | ||
|  | ### autoDestroy=false
 | ||
|  | 
 | ||
|  | By default, `through` emits close when the writable | ||
|  | and readable side of the stream has ended. | ||
|  | If that is not desired, set `autoDestroy=false`. | ||
|  | 
 | ||
|  | ``` js | ||
|  | var through = require('through') | ||
|  | 
 | ||
|  | //like this | ||
|  | var ts = through(write, end, {autoDestroy: false}) | ||
|  | //or like this | ||
|  | var ts = through(write, end) | ||
|  | ts.autoDestroy = false | ||
|  | ``` | ||
|  | 
 | ||
|  | ## License
 | ||
|  | 
 | ||
|  | MIT / Apache2 |