6fa9f190384f3ed311a78f954a0ebb8c9eb6edbda0062f3d7c6a406b521761959c27eb876a5d9adeea5de6240677bbc64e495a149818d0880db8077770b1ac 1.9 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import { Observable } from '../Observable';
  2. import { isArray } from '../util/isArray';
  3. import { MonoTypeOperatorFunction, OperatorFunction } from '../types';
  4. import { race as raceStatic } from '../observable/race';
  5. /* tslint:disable:max-line-length */
  6. /** @deprecated Deprecated in favor of static race. */
  7. export function race<T>(observables: Array<Observable<T>>): MonoTypeOperatorFunction<T>;
  8. /** @deprecated Deprecated in favor of static race. */
  9. export function race<T, R>(observables: Array<Observable<T>>): OperatorFunction<T, R>;
  10. /** @deprecated Deprecated in favor of static race. */
  11. export function race<T>(...observables: Array<Observable<T> | Array<Observable<T>>>): MonoTypeOperatorFunction<T>;
  12. /** @deprecated Deprecated in favor of static race. */
  13. export function race<T, R>(...observables: Array<Observable<any> | Array<Observable<any>>>): OperatorFunction<T, R>;
  14. /* tslint:enable:max-line-length */
  15. /**
  16. * Returns an Observable that mirrors the first source Observable to emit a next,
  17. * error or complete notification from the combination of this Observable and supplied Observables.
  18. * @param {...Observables} ...observables Sources used to race for which Observable emits first.
  19. * @return {Observable} An Observable that mirrors the output of the first Observable to emit an item.
  20. * @method race
  21. * @owner Observable
  22. * @deprecated Deprecated in favor of static {@link race}.
  23. */
  24. export function race<T>(...observables: (Observable<T> | Observable<T>[])[]): MonoTypeOperatorFunction<T> {
  25. return function raceOperatorFunction(source: Observable<T>) {
  26. // if the only argument is an array, it was most likely called with
  27. // `pair([obs1, obs2, ...])`
  28. if (observables.length === 1 && isArray(observables[0])) {
  29. observables = observables[0] as Observable<T>[];
  30. }
  31. return source.lift.call(raceStatic(source, ...(observables as Observable<T>[])));
  32. };
  33. }