UNPKG

@reactivex/ix-es5-esm

Version:

The Interactive Extensions for JavaScript

49 lines (47 loc) 1.89 kB
import { __asyncGenerator, __await, __extends, __generator } from "tslib"; import { AsyncIterableX } from './asynciterablex.js'; import { sleep } from './_sleep.js'; import { throwIfAborted } from '../aborterror.js'; var IntervalAsyncIterable = /** @class */ (function (_super) { __extends(IntervalAsyncIterable, _super); function IntervalAsyncIterable(dueTime) { var _this = _super.call(this) || this; _this._dueTime = dueTime; return _this; } IntervalAsyncIterable.prototype[Symbol.asyncIterator] = function (signal) { return __asyncGenerator(this, arguments, function _a() { var i; return __generator(this, function (_b) { switch (_b.label) { case 0: throwIfAborted(signal); i = 0; _b.label = 1; case 1: if (!1) return [3 /*break*/, 5]; return [4 /*yield*/, __await(sleep(this._dueTime, signal))]; case 2: _b.sent(); return [4 /*yield*/, __await(i++)]; case 3: return [4 /*yield*/, _b.sent()]; case 4: _b.sent(); return [3 /*break*/, 1]; case 5: return [2 /*return*/]; } }); }); }; return IntervalAsyncIterable; }(AsyncIterableX)); /** * Produces a new item in an async-iterable at the given interval cycle time. * * @param {number} dueTime The due time in milliseconds to spawn a new item. * @returns {AsyncIterableX<number>} An async-iterable producing values at the specified interval. */ export function interval(dueTime) { return new IntervalAsyncIterable(dueTime); } //# sourceMappingURL=interval.js.map