UNPKG

@reactivex/ix-es5-esm

Version:

The Interactive Extensions for JavaScript

76 lines (74 loc) 3.22 kB
import { __asyncGenerator, __await, __extends, __generator } from "tslib"; import { AsyncIterableX } from '../asynciterablex.js'; import { wrapWithAbort } from './withabort.js'; import { throwIfAborted } from '../../aborterror.js'; /** @ignore */ var SliceAsyncIterable = /** @class */ (function (_super) { __extends(SliceAsyncIterable, _super); function SliceAsyncIterable(source, begin, end) { var _this = _super.call(this) || this; _this._source = source; _this._begin = begin; _this._end = end; return _this; } SliceAsyncIterable.prototype[Symbol.asyncIterator] = function (signal) { return __asyncGenerator(this, arguments, function _a() { var source, it, begin, next, _b, end; return __generator(this, function (_c) { switch (_c.label) { case 0: throwIfAborted(signal); source = wrapWithAbort(this._source, signal); it = source[Symbol.asyncIterator](); begin = this._begin; _c.label = 1; case 1: _b = begin > 0; if (!_b) return [3 /*break*/, 3]; return [4 /*yield*/, __await(it.next())]; case 2: _b = !(next = _c.sent()).done; _c.label = 3; case 3: if (!_b) return [3 /*break*/, 4]; begin--; return [3 /*break*/, 1]; case 4: end = this._end; if (!(end > 0)) return [3 /*break*/, 9]; _c.label = 5; case 5: return [4 /*yield*/, __await(it.next())]; case 6: if (!!(next = _c.sent()).done) return [3 /*break*/, 9]; return [4 /*yield*/, __await(next.value)]; case 7: return [4 /*yield*/, _c.sent()]; case 8: _c.sent(); if (--end === 0) { return [3 /*break*/, 9]; } return [3 /*break*/, 5]; case 9: return [2 /*return*/]; } }); }); }; return SliceAsyncIterable; }(AsyncIterableX)); export { SliceAsyncIterable }; /** * Returns the elements from the source async-iterable sequence only after the function that returns a promise produces an element. * * @template TSource The type of elements in the source sequence. * @param {number} begin Zero-based index at which to begin extraction. * @param {number} [end=Infinity] Zero-based index before which to end extraction. * @returns {MonoTypeOperatorAsyncFunction<TSource>} An async-iterable containing the extracted elements. */ export function slice(begin, end) { if (end === void 0) { end = Infinity; } return function sliceOperatorFunction(source) { return new SliceAsyncIterable(source, begin, end); }; } //# sourceMappingURL=slice.js.map