.
This commit is contained in:
40
node_modules/rxjs/dist/esm/internal/observable/forkJoin.js
generated
vendored
Normal file
40
node_modules/rxjs/dist/esm/internal/observable/forkJoin.js
generated
vendored
Normal file
@@ -0,0 +1,40 @@
|
||||
import { Observable } from '../Observable';
|
||||
import { argsArgArrayOrObject } from '../util/argsArgArrayOrObject';
|
||||
import { innerFrom } from './innerFrom';
|
||||
import { popResultSelector } from '../util/args';
|
||||
import { createOperatorSubscriber } from '../operators/OperatorSubscriber';
|
||||
import { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';
|
||||
import { createObject } from '../util/createObject';
|
||||
export function forkJoin(...args) {
|
||||
const resultSelector = popResultSelector(args);
|
||||
const { args: sources, keys } = argsArgArrayOrObject(args);
|
||||
const result = new Observable((subscriber) => {
|
||||
const { length } = sources;
|
||||
if (!length) {
|
||||
subscriber.complete();
|
||||
return;
|
||||
}
|
||||
const values = new Array(length);
|
||||
let remainingCompletions = length;
|
||||
let remainingEmissions = length;
|
||||
for (let sourceIndex = 0; sourceIndex < length; sourceIndex++) {
|
||||
let hasValue = false;
|
||||
innerFrom(sources[sourceIndex]).subscribe(createOperatorSubscriber(subscriber, (value) => {
|
||||
if (!hasValue) {
|
||||
hasValue = true;
|
||||
remainingEmissions--;
|
||||
}
|
||||
values[sourceIndex] = value;
|
||||
}, () => remainingCompletions--, undefined, () => {
|
||||
if (!remainingCompletions || !hasValue) {
|
||||
if (!remainingEmissions) {
|
||||
subscriber.next(keys ? createObject(keys, values) : values);
|
||||
}
|
||||
subscriber.complete();
|
||||
}
|
||||
}));
|
||||
}
|
||||
});
|
||||
return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;
|
||||
}
|
||||
//# sourceMappingURL=forkJoin.js.map
|
||||
Reference in New Issue
Block a user