import { Observable } from '../Observable'; | |
import { innerFrom } from './innerFrom'; | |
import { argsOrArgArray } from '../util/argsOrArgArray'; | |
import { createOperatorSubscriber } from '../operators/OperatorSubscriber'; | |
export function race() { | |
var sources = []; | |
for (var _i = 0; _i < arguments.length; _i++) { | |
sources[_i] = arguments[_i]; | |
} | |
sources = argsOrArgArray(sources); | |
return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources)); | |
} | |
export function raceInit(sources) { | |
return function (subscriber) { | |
var subscriptions = []; | |
var _loop_1 = function (i) { | |
subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, function (value) { | |
if (subscriptions) { | |
for (var s = 0; s < subscriptions.length; s++) { | |
s !== i && subscriptions[s].unsubscribe(); | |
} | |
subscriptions = null; | |
} | |
subscriber.next(value); | |
}))); | |
}; | |
for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) { | |
_loop_1(i); | |
} | |
}; | |
} | |
//# sourceMappingURL=race.js.map |