iterama
Version:
Composable functional (async) iterable helpers
41 lines (36 loc) • 1.3 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
import _awaitAsyncGenerator from "@babel/runtime/helpers/esm/awaitAsyncGenerator";
import _wrapAsyncGenerator from "@babel/runtime/helpers/esm/wrapAsyncGenerator";
export function zipAsync() {
for (var _len = arguments.length, iterables = new Array(_len), _key = 0; _key < _len; _key++) {
iterables[_key] = arguments[_key];
}
return _defineProperty({}, Symbol.asyncIterator, function () {
return _wrapAsyncGenerator(function* () {
var iterators = iterables.map(function (i) {
return i[Symbol.asyncIterator]();
});
try {
while (true) {
var values = yield _awaitAsyncGenerator(Promise.all(iterators.map(function (i) {
return i.next();
})));
if (values.some(function (v) {
return v.done;
})) {
break;
}
yield values.map(function (v) {
return v.value;
});
}
} finally {
yield _awaitAsyncGenerator(Promise.all(iterators.map(function (i) {
var _i$return;
return (_i$return = i.return) === null || _i$return === void 0 ? void 0 : _i$return.call(i);
})));
}
})();
});
}
//# sourceMappingURL=zip-async.js.map