@reactivex/ix-es5-esm
Version:
The Interactive Extensions for JavaScript
52 lines (50 loc) • 1.89 kB
JavaScript
import { __extends, __generator } from "tslib";
import { IterableX } from './iterablex.js';
import { returnIterator } from '../util/returniterator.js';
/** @ignore */
var ZipIterable = /** @class */ (function (_super) {
__extends(ZipIterable, _super);
function ZipIterable(sources) {
var _this = _super.call(this) || this;
_this._sources = sources;
return _this;
}
// eslint-disable-next-line consistent-return
ZipIterable.prototype[Symbol.iterator] = function () {
var sourcesLength, its, values, index, result;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
sourcesLength = this._sources.length;
its = this._sources.map(function (x) { return x[Symbol.iterator](); });
_a.label = 1;
case 1:
if (!(sourcesLength > 0)) return [3 /*break*/, 3];
values = new Array(sourcesLength);
for (index = -1; ++index < sourcesLength;) {
result = its[index].next();
if (result.done) {
its.forEach(returnIterator);
return [2 /*return*/, undefined];
}
values[index] = result.value;
}
return [4 /*yield*/, values];
case 2:
_a.sent();
return [3 /*break*/, 1];
case 3: return [2 /*return*/];
}
});
};
return ZipIterable;
}(IterableX));
export { ZipIterable };
export function zip() {
var sources = [];
for (var _i = 0; _i < arguments.length; _i++) {
sources[_i] = arguments[_i];
}
return new ZipIterable(sources);
}
//# sourceMappingURL=zip.js.map