stream-race

1.0.1 • Public • Published

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(+ 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

Package Sidebar

Install

npm i stream-race

Weekly Downloads

0

Version

1.0.1

License

MIT

Last publish

Collaborators

  • utanapishtim