diff options
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/observable/race.js')
| -rw-r--r-- | node_modules/rxjs/dist/esm/internal/observable/race.js | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/observable/race.js b/node_modules/rxjs/dist/esm/internal/observable/race.js new file mode 100644 index 0000000..c45a0ee --- /dev/null +++ b/node_modules/rxjs/dist/esm/internal/observable/race.js @@ -0,0 +1,25 @@ +import { Observable } from '../Observable'; +import { innerFrom } from './innerFrom'; +import { argsOrArgArray } from '../util/argsOrArgArray'; +import { createOperatorSubscriber } from '../operators/OperatorSubscriber'; +export function race(...sources) { + sources = argsOrArgArray(sources); + return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources)); +} +export function raceInit(sources) { + return (subscriber) => { + let subscriptions = []; + for (let i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) { + subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, (value) => { + if (subscriptions) { + for (let s = 0; s < subscriptions.length; s++) { + s !== i && subscriptions[s].unsubscribe(); + } + subscriptions = null; + } + subscriber.next(value); + }))); + } + }; +} +//# sourceMappingURL=race.js.map
\ No newline at end of file |
