stream-race v1.0.1
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