市场夺宝奇兵
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.

53 lines
1.4 KiB

  1. # merge-streams
  2. > Merge multiple streams into a unified stream
  3. ## Install
  4. ```sh
  5. npm install @sindresorhus/merge-streams
  6. ```
  7. ## Usage
  8. ```js
  9. import mergeStreams from '@sindresorhus/merge-streams';
  10. const stream = mergeStreams([streamA, streamB]);
  11. for await (const chunk of stream) {
  12. console.log(chunk);
  13. //=> 'A1'
  14. //=> 'B1'
  15. //=> 'A2'
  16. //=> 'B2'
  17. }
  18. ```
  19. ## API
  20. ### `mergeStreams(streams: stream.Readable[]): MergedStream`
  21. Merges an array of [readable streams](https://nodejs.org/api/stream.html#readable-streams) and returns a new readable stream that emits data from the individual streams as it arrives.
  22. If you provide an empty array, the stream remains open but can be [manually ended](https://nodejs.org/api/stream.html#writableendchunk-encoding-callback).
  23. #### `MergedStream`
  24. _Type_: `stream.Readable`
  25. A single stream combining the output of multiple streams.
  26. ##### `MergedStream.add(stream: stream.Readable): void`
  27. Pipe a new readable stream.
  28. Throws if `MergedStream` has already ended.
  29. ##### `MergedStream.remove(stream: stream.Readable): Promise<boolean>`
  30. Unpipe a stream previously added using either [`mergeStreams(streams)`](#mergestreamsstreams-streamreadable-mergedstream) or [`MergedStream.add(stream)`](#mergedstreamaddstream-streamreadable-void).
  31. Returns `false` if the stream was not previously added, or if it was already removed by `MergedStream.remove(stream)`.
  32. The removed stream is not automatically ended.