aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/src/internal/operators/toArray.ts
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/toArray.ts')
-rw-r--r--node_modules/rxjs/src/internal/operators/toArray.ts44
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.png)
+ *
+ * `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);
+ });
+}
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage