aboutsummaryrefslogtreecommitdiffstats
path: root/node_modules/rxjs/dist/esm/internal/observable/zip.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/observable/zip.js')
-rw-r--r--node_modules/rxjs/dist/esm/internal/observable/zip.js38
1 files changed, 38 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/observable/zip.js b/node_modules/rxjs/dist/esm/internal/observable/zip.js
new file mode 100644
index 0000000..ed4487b
--- /dev/null
+++ b/node_modules/rxjs/dist/esm/internal/observable/zip.js
@@ -0,0 +1,38 @@
+import { Observable } from '../Observable';
+import { innerFrom } from './innerFrom';
+import { argsOrArgArray } from '../util/argsOrArgArray';
+import { EMPTY } from './empty';
+import { createOperatorSubscriber } from '../operators/OperatorSubscriber';
+import { popResultSelector } from '../util/args';
+export function zip(...args) {
+ const resultSelector = popResultSelector(args);
+ const sources = argsOrArgArray(args);
+ return sources.length
+ ? new Observable((subscriber) => {
+ let buffers = sources.map(() => []);
+ let completed = sources.map(() => false);
+ subscriber.add(() => {
+ buffers = completed = null;
+ });
+ for (let sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {
+ innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => {
+ buffers[sourceIndex].push(value);
+ if (buffers.every((buffer) => buffer.length)) {
+ const result = buffers.map((buffer) => buffer.shift());
+ subscriber.next(resultSelector ? resultSelector(...result) : result);
+ if (buffers.some((buffer, i) => !buffer.length && completed[i])) {
+ subscriber.complete();
+ }
+ }
+ }, () => {
+ completed[sourceIndex] = true;
+ !buffers[sourceIndex].length && subscriber.complete();
+ }));
+ }
+ return () => {
+ buffers = completed = null;
+ };
+ })
+ : EMPTY;
+}
+//# sourceMappingURL=zip.js.map \ No newline at end of file
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage