UNPKG

@reactivex/ix-es5-esm

Version:

The Interactive Extensions for JavaScript

49 lines (47 loc) 2.03 kB
import { __asyncGenerator, __await, __extends, __generator } from "tslib"; import { AsyncIterableX } from './asynciterablex.js'; import { throwIfAborted } from '../aborterror.js'; var AnonymousAsyncIterable = /** @class */ (function (_super) { __extends(AnonymousAsyncIterable, _super); function AnonymousAsyncIterable(fn) { var _this = _super.call(this) || this; _this._fn = fn; return _this; } AnonymousAsyncIterable.prototype[Symbol.asyncIterator] = function (signal) { return __asyncGenerator(this, arguments, function _a() { var it, next; return __generator(this, function (_b) { switch (_b.label) { case 0: throwIfAborted(signal); return [4 /*yield*/, __await(this._fn(signal))]; case 1: it = _b.sent(); _b.label = 2; case 2: return [4 /*yield*/, __await(it.next())]; case 3: if (!!(next = _b.sent()).done) return [3 /*break*/, 6]; return [4 /*yield*/, __await(next.value)]; case 4: return [4 /*yield*/, _b.sent()]; case 5: _b.sent(); return [3 /*break*/, 2]; case 6: return [2 /*return*/]; } }); }); }; return AnonymousAsyncIterable; }(AsyncIterableX)); /** * Creates a new iterable using the specified function implementing the members of AsyncIterable * * @template T The type of the elements returned by the enumerable sequence. * @param {((signal?: AbortSignal) => AsyncIterator<T> | Promise<AsyncIterator<T>>)} fn The function that creates the [Symbol.asyncIterator]() method * @returns {AsyncIterableX<T>} A new async-iterable instance. */ export function create(fn) { return new AnonymousAsyncIterable(fn); } //# sourceMappingURL=create.js.map