12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- "use strict";
- var __read = (this && this.__read) || function (o, n) {
- var m = typeof Symbol === "function" && o[Symbol.iterator];
- if (!m) return o;
- var i = m.call(o), r, ar = [], e;
- try {
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- }
- catch (error) { e = { error: error }; }
- finally {
- try {
- if (r && !r.done && (m = i["return"])) m.call(i);
- }
- finally { if (e) throw e.error; }
- }
- return ar;
- };
- var __spreadArray = (this && this.__spreadArray) || function (to, from) {
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
- to[j] = from[i];
- return to;
- };
- Object.defineProperty(exports, "__esModule", { value: true });
- exports.zip = void 0;
- var Observable_1 = require("../Observable");
- var innerFrom_1 = require("./innerFrom");
- var argsOrArgArray_1 = require("../util/argsOrArgArray");
- var empty_1 = require("./empty");
- var OperatorSubscriber_1 = require("../operators/OperatorSubscriber");
- var args_1 = require("../util/args");
- function zip() {
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- var resultSelector = args_1.popResultSelector(args);
- var sources = argsOrArgArray_1.argsOrArgArray(args);
- return sources.length
- ? new Observable_1.Observable(function (subscriber) {
- var buffers = sources.map(function () { return []; });
- var completed = sources.map(function () { return false; });
- subscriber.add(function () {
- buffers = completed = null;
- });
- var _loop_1 = function (sourceIndex) {
- innerFrom_1.innerFrom(sources[sourceIndex]).subscribe(OperatorSubscriber_1.createOperatorSubscriber(subscriber, function (value) {
- buffers[sourceIndex].push(value);
- if (buffers.every(function (buffer) { return buffer.length; })) {
- var result = buffers.map(function (buffer) { return buffer.shift(); });
- subscriber.next(resultSelector ? resultSelector.apply(void 0, __spreadArray([], __read(result))) : result);
- if (buffers.some(function (buffer, i) { return !buffer.length && completed[i]; })) {
- subscriber.complete();
- }
- }
- }, function () {
- completed[sourceIndex] = true;
- !buffers[sourceIndex].length && subscriber.complete();
- }));
- };
- for (var sourceIndex = 0; !subscriber.closed && sourceIndex < sources.length; sourceIndex++) {
- _loop_1(sourceIndex);
- }
- return function () {
- buffers = completed = null;
- };
- })
- : empty_1.EMPTY;
- }
- exports.zip = zip;
- //# sourceMappingURL=zip.js.map
|