You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.6 KiB
Markdown
44 lines
1.6 KiB
Markdown
# @promistream/collect
|
|
|
|
<!-- FIXME: Uncomment below at 1.0.0 release -->
|
|
<!-- __This module is compatible with the [Promistream](https://promistream.cryto.net/) standard, version 1.0.0 - the latest at the time of writing.__ -->
|
|
|
|
This is a sink stream that's used to collect the results of a pipeline into a single array.
|
|
|
|
When its `read` method is called, this stream returns a Promise and then just endlessly reads from its source stream until it receives an `EndOfStream`. Once the source stream ends, the Promise is resolved with an array containing every value that the `collect` stream has received.
|
|
|
|
## Example
|
|
|
|
```js
|
|
"use strict";
|
|
|
|
const Promise = require("bluebird");
|
|
const pipe = require("@promistream/pipe");
|
|
const rangeNumbers = require("@promistream/range-numbers");
|
|
const collect = require("@promistream/collect");
|
|
|
|
return Promise.try(() => {
|
|
return pipe([
|
|
rangeNumbers(0, 20),
|
|
collect()
|
|
]).read();
|
|
}).then((result) => {
|
|
console.log(result);
|
|
// [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 ]
|
|
});
|
|
```
|
|
|
|
## API
|
|
|
|
### collect()
|
|
|
|
Returns a new collect stream. Takes no arguments.
|
|
|
|
Stream behaviour:
|
|
|
|
- __Reads from source:__ Infinitely, until the end of the source stream is reached.
|
|
- __Consumes:__ Values of any kind.
|
|
- __Produces:__ Returns a Promise when `.read()` is called, that will resolve with accumulated values received from the source stream when its end is reached, or reject when an error of any kind (including an `Aborted` marker) is received from the source stream.
|
|
- __Throws:__ Only when an error is received from upstream.
|
|
- __Aborts:__ Never.
|