UNPKG

@reactivex/ix-esnext-esm

Version:

The Interactive Extensions for JavaScript

25 lines (23 loc) 983 B
import { AsyncIterableX } from './asynciterablex'; import { sleep } from './_sleep'; class GenerateTimeAsyncIterable extends AsyncIterableX { constructor(initialState, condition, iterate, resultSelector, timeSelector) { super(); this._initialState = initialState; this._condition = condition; this._iterate = iterate; this._resultSelector = resultSelector; this._timeSelector = timeSelector; } async *[Symbol.asyncIterator]() { for (let i = this._initialState; await this._condition(i); i = await this._iterate(i)) { const time = await this._timeSelector(i); await sleep(time); yield await this._resultSelector(i); } } } export function generateTime(initialState, condition, iterate, resultSelector, timeSelector) { return new GenerateTimeAsyncIterable(initialState, condition, iterate, resultSelector, timeSelector); } //# sourceMappingURL=generatetime.mjs.map