stream-race
v1.0.1
Published
Like Promise.race but for streams
Downloads
2
Maintainers
Readme
stream-race
Like Promise.race but for streams
installation
npm install stream-race
usage
race([opts], array) => readable stream
race
takes an array of Readable
streams and an optional object opts
that
contains options for the constructor.
race
listens to the 'data'
and 'error'
events on each stream in the array
and treats the first stream to emit either as its sole data source. Thereafter, race
emits all and only those events emitted by the first emitting stream
and each call to _read
on race
will return the value of the call to the
first emitting stream.
Currently, the only key in opts
race cares about is onRaced
; all other
options will be passed to the underlying readable stream constructor.
opts.onRaced: function (stream) => side effect
onRaced
will be called on all streams not equal to the first emitting streams.
It can be used to close http
requests or pending fs
read streams.
example
var race = require('stream-race')
var through = require('through2')
var add = (x) => through.obj(function (y, _, cb) {
this.push(x + y)
return cb()
})
var a1 = add(1)
var a2 = add(2)
var r = race([a1, a2])
r.on('data', console.log)
a1.write(1) // 1
a2.write(1) // nothing happens
a1.write(4) // 5