UNPKG

ix

Version:

The Interactive Extensions for JavaScript

32 lines (30 loc) 997 B
import { IterableX } from './iterablex.mjs'; import { returnIterator } from '../util/returniterator.mjs'; /** @ignore */ export class ZipIterable extends IterableX { constructor(sources) { super(); this._sources = sources; } // eslint-disable-next-line consistent-return *[Symbol.iterator]() { const sourcesLength = this._sources.length; const its = this._sources.map((x) => x[Symbol.iterator]()); while (sourcesLength > 0) { const values = new Array(sourcesLength); for (let index = -1; ++index < sourcesLength;) { const result = its[index].next(); if (result.done) { its.forEach(returnIterator); return undefined; } values[index] = result.value; } yield values; } } } export function zip(...sources) { return new ZipIterable(sources); } //# sourceMappingURL=zip.mjs.map