1 | import { AsyncIterableX } from './asynciterablex';
|
2 | class GenerateAsyncIterable extends AsyncIterableX {
|
3 | constructor(initialState, condition, iterate, resultSelector) {
|
4 | super();
|
5 | this._initialState = initialState;
|
6 | this._condition = condition;
|
7 | this._iterate = iterate;
|
8 | this._resultSelector = resultSelector;
|
9 | }
|
10 | async *[Symbol.asyncIterator]() {
|
11 | for (let i = this._initialState; await this._condition(i); i = await this._iterate(i)) {
|
12 | yield await this._resultSelector(i);
|
13 | }
|
14 | }
|
15 | }
|
16 | export function generate(initialState, condition, iterate, resultSelector) {
|
17 | return new GenerateAsyncIterable(initialState, condition, iterate, resultSelector);
|
18 | }
|
19 |
|
20 |
|