@reactivex/ix-es5-esm
Version:
The Interactive Extensions for JavaScript
49 lines (47 loc) • 2.03 kB
JavaScript
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