diff options
Diffstat (limited to 'node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js')
| -rw-r--r-- | node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js b/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js new file mode 100644 index 0000000..35a4ec8 --- /dev/null +++ b/node_modules/rxjs/dist/esm5/internal/observable/combineLatest.js @@ -0,0 +1,70 @@ +import { Observable } from '../Observable'; +import { argsArgArrayOrObject } from '../util/argsArgArrayOrObject'; +import { from } from './from'; +import { identity } from '../util/identity'; +import { mapOneOrManyArgs } from '../util/mapOneOrManyArgs'; +import { popResultSelector, popScheduler } from '../util/args'; +import { createObject } from '../util/createObject'; +import { createOperatorSubscriber } from '../operators/OperatorSubscriber'; +import { executeSchedule } from '../util/executeSchedule'; +export function combineLatest() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var scheduler = popScheduler(args); + var resultSelector = popResultSelector(args); + var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys; + if (observables.length === 0) { + return from([], scheduler); + } + var result = new Observable(combineLatestInit(observables, scheduler, keys + ? + function (values) { return createObject(keys, values); } + : + identity)); + return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result; +} +export function combineLatestInit(observables, scheduler, valueTransform) { + if (valueTransform === void 0) { valueTransform = identity; } + return function (subscriber) { + maybeSchedule(scheduler, function () { + var length = observables.length; + var values = new Array(length); + var active = length; + var remainingFirstValues = length; + var _loop_1 = function (i) { + maybeSchedule(scheduler, function () { + var source = from(observables[i], scheduler); + var hasFirstValue = false; + source.subscribe(createOperatorSubscriber(subscriber, function (value) { + values[i] = value; + if (!hasFirstValue) { + hasFirstValue = true; + remainingFirstValues--; + } + if (!remainingFirstValues) { + subscriber.next(valueTransform(values.slice())); + } + }, function () { + if (!--active) { + subscriber.complete(); + } + })); + }, subscriber); + }; + for (var i = 0; i < length; i++) { + _loop_1(i); + } + }, subscriber); + }; +} +function maybeSchedule(scheduler, execute, subscription) { + if (scheduler) { + executeSchedule(subscription, scheduler, execute); + } + else { + execute(); + } +} +//# sourceMappingURL=combineLatest.js.map
\ No newline at end of file |
