import { Observable } from '../Observable'; import { identity } from '../util/identity'; import { isScheduler } from '../util/isScheduler'; export function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) { let resultSelector; let initialState; if (arguments.length == 1) { const options = initialStateOrOptions; initialState = options.initialState; condition = options.condition; iterate = options.iterate; resultSelector = options.resultSelector || identity; scheduler = options.scheduler; } else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) { initialState = initialStateOrOptions; resultSelector = identity; scheduler = resultSelectorOrObservable; } else { initialState = initialStateOrOptions; resultSelector = resultSelectorOrObservable; } return new Observable(subscriber => { let state = initialState; if (scheduler) { return scheduler.schedule(dispatch, 0, { subscriber, iterate, condition, resultSelector, state }); } do { if (condition) { let conditionResult; try { conditionResult = condition(state); } catch (err) { subscriber.error(err); return undefined; } if (!conditionResult) { subscriber.complete(); break; } } let value; try { value = resultSelector(state); } catch (err) { subscriber.error(err); return undefined; } subscriber.next(value); if (subscriber.closed) { break; } try { state = iterate(state); } catch (err) { subscriber.error(err); return undefined; } } while (true); return undefined; }); } function dispatch(state) { const { subscriber, condition } = state; if (subscriber.closed) { return undefined; } if (state.needIterate) { try { state.state = state.iterate(state.state); } catch (err) { subscriber.error(err); return undefined; } } else { state.needIterate = true; } if (condition) { let conditionResult; try { conditionResult = condition(state.state); } catch (err) { subscriber.error(err); return undefined; } if (!conditionResult) { subscriber.complete(); return undefined; } if (subscriber.closed) { return undefined; } } let value; try { value = state.resultSelector(state.state); } catch (err) { subscriber.error(err); return undefined; } if (subscriber.closed) { return undefined; } subscriber.next(value); if (subscriber.closed) { return undefined; } return this.schedule(state); } //# sourceMappingURL=generate.js.map
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
dom | Folder | 0755 |
|
|
ConnectableObservable.js | File | 4.14 KB | 0644 |
|
ConnectableObservable.js.map | File | 3.82 KB | 0644 |
|
SubscribeOnObservable.js | File | 1.14 KB | 0644 |
|
SubscribeOnObservable.js.map | File | 1.2 KB | 0644 |
|
bindCallback.js | File | 2.82 KB | 0644 |
|
bindCallback.js.map | File | 2.83 KB | 0644 |
|
bindNodeCallback.js | File | 3.25 KB | 0644 |
|
bindNodeCallback.js.map | File | 3.23 KB | 0644 |
|
combineLatest.js | File | 2.82 KB | 0644 |
|
combineLatest.js.map | File | 2.86 KB | 0644 |
|
concat.js | File | 200 B | 0644 |
|
concat.js.map | File | 308 B | 0644 |
|
defer.js | File | 516 B | 0644 |
|
defer.js.map | File | 636 B | 0644 |
|
empty.js | File | 375 B | 0644 |
|
empty.js.map | File | 521 B | 0644 |
|
forkJoin.js | File | 2.2 KB | 0644 |
|
forkJoin.js.map | File | 2.43 KB | 0644 |
|
from.js | File | 441 B | 0644 |
|
from.js.map | File | 489 B | 0644 |
|
fromArray.js | File | 399 B | 0644 |
|
fromArray.js.map | File | 446 B | 0644 |
|
fromEvent.js | File | 2.45 KB | 0644 |
|
fromEvent.js.map | File | 2.53 KB | 0644 |
|
fromEventPattern.js | File | 926 B | 0644 |
|
fromEventPattern.js.map | File | 1.09 KB | 0644 |
|
fromIterable.js | File | 499 B | 0644 |
|
fromIterable.js.map | File | 529 B | 0644 |
|
fromPromise.js | File | 415 B | 0644 |
|
fromPromise.js.map | File | 450 B | 0644 |
|
generate.js | File | 3.39 KB | 0644 |
|
generate.js.map | File | 2.88 KB | 0644 |
|
iif.js | File | 237 B | 0644 |
|
iif.js.map | File | 364 B | 0644 |
|
interval.js | File | 758 B | 0644 |
|
interval.js.map | File | 945 B | 0644 |
|
merge.js | File | 901 B | 0644 |
|
merge.js.map | File | 995 B | 0644 |
|
never.js | File | 203 B | 0644 |
|
never.js.map | File | 307 B | 0644 |
|
of.js | File | 413 B | 0644 |
|
of.js.map | File | 511 B | 0644 |
|
onErrorResumeNext.js | File | 763 B | 0644 |
|
onErrorResumeNext.js.map | File | 941 B | 0644 |
|
pairs.js | File | 1.29 KB | 0644 |
|
pairs.js.map | File | 1.52 KB | 0644 |
|
partition.js | File | 441 B | 0644 |
|
partition.js.map | File | 562 B | 0644 |
|
race.js | File | 2.04 KB | 0644 |
|
race.js.map | File | 2.01 KB | 0644 |
|
range.js | File | 1.14 KB | 0644 |
|
range.js.map | File | 1.19 KB | 0644 |
|
throwError.js | File | 421 B | 0644 |
|
throwError.js.map | File | 565 B | 0644 |
|
timer.js | File | 1.12 KB | 0644 |
|
timer.js.map | File | 1.29 KB | 0644 |
|
using.js | File | 898 B | 0644 |
|
using.js.map | File | 939 B | 0644 |
|
zip.js | File | 5.7 KB | 0644 |
|
zip.js.map | File | 5.67 KB | 0644 |
|