Show More
Commit Description:
submission report
Commit Description:
submission report
References:
File last commit:
Show/Diff file:
Action:
node_modules/through/readme.markdown
| 64 lines
| 1.6 KiB
| text/x-markdown
| MarkdownLexer
|
r789 | #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 | ||||