diff options
| author | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:26:46 -0700 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2025-06-28 17:43:56 -0700 |
| commit | e4fa1e69e7ebfb627c7198fd1a9881e9327ec4d4 (patch) | |
| tree | 06284a538a6008eca75051399e47db4e5d50301c /node_modules/rxjs/src/internal/operators/toArray.ts | |
initial commit: scaffolding
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/toArray.ts')
| -rw-r--r-- | node_modules/rxjs/src/internal/operators/toArray.ts | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/operators/toArray.ts b/node_modules/rxjs/src/internal/operators/toArray.ts new file mode 100644 index 0000000..2678472 --- /dev/null +++ b/node_modules/rxjs/src/internal/operators/toArray.ts @@ -0,0 +1,44 @@ +import { reduce } from './reduce'; +import { OperatorFunction } from '../types'; +import { operate } from '../util/lift'; + +const arrReducer = (arr: any[], value: any) => (arr.push(value), arr); + +/** + * Collects all source emissions and emits them as an array when the source completes. + * + * <span class="informal">Get all values inside an array when the source completes</span> + * + *  + * + * `toArray` will wait until the source Observable completes before emitting + * the array containing all emissions. When the source Observable errors no + * array will be emitted. + * + * ## Example + * + * ```ts + * import { interval, take, toArray } from 'rxjs'; + * + * const source = interval(1000); + * const example = source.pipe( + * take(10), + * toArray() + * ); + * + * example.subscribe(value => console.log(value)); + * + * // output: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + * ``` + * + * @return A function that returns an Observable that emits an array of items + * emitted by the source Observable when source completes. + */ +export function toArray<T>(): OperatorFunction<T, T[]> { + // Because arrays are mutable, and we're mutating the array in this + // reducer process, we have to encapsulate the creation of the initial + // array within this `operate` function. + return operate((source, subscriber) => { + reduce(arrReducer, [] as T[])(source).subscribe(subscriber); + }); +} |
