From 8bca65644486d6943f940620b8d0588a4be0c53f Mon Sep 17 00:00:00 2001 From: OJ Kwon Date: Wed, 11 Nov 2015 14:45:59 -0800 Subject: [PATCH] refactor(Operators): use isScheduler utility function --- src/observables/ArrayObservable.ts | 3 ++- src/observables/TimerObservable.ts | 3 ++- src/operators/combineLatest-static.ts | 3 ++- src/operators/concat-static.ts | 3 ++- src/operators/concat.ts | 3 ++- src/operators/merge-static.ts | 3 ++- src/operators/startWith.ts | 3 ++- 7 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/observables/ArrayObservable.ts b/src/observables/ArrayObservable.ts index e0b32664ab..627b03de55 100644 --- a/src/observables/ArrayObservable.ts +++ b/src/observables/ArrayObservable.ts @@ -2,6 +2,7 @@ import {Scheduler} from '../Scheduler'; import {Observable} from '../Observable'; import {ScalarObservable} from './ScalarObservable'; import {EmptyObservable} from './EmptyObservable'; +import {isScheduler} from '../util/isScheduler'; export class ArrayObservable extends Observable { @@ -11,7 +12,7 @@ export class ArrayObservable extends Observable { static of(...array: Array): Observable { let scheduler = array[array.length - 1]; - if (scheduler && typeof scheduler.schedule === 'function') { + if (isScheduler(scheduler)) { array.pop(); } else { scheduler = void 0; diff --git a/src/observables/TimerObservable.ts b/src/observables/TimerObservable.ts index 6bb4a14556..68149795b2 100644 --- a/src/observables/TimerObservable.ts +++ b/src/observables/TimerObservable.ts @@ -2,6 +2,7 @@ import {isNumeric} from '../util/isNumeric'; import {Scheduler} from '../Scheduler'; import {Observable} from '../Observable'; import {nextTick} from '../schedulers/nextTick'; +import {isScheduler} from '../util/isScheduler'; export class TimerObservable extends Observable { @@ -39,7 +40,7 @@ export class TimerObservable extends Observable { super(); if (isNumeric(period)) { this._period = Number(period) < 1 && 1 || Number(period); - } else if (period && typeof ( period).schedule === 'function') { + } else if (isScheduler(period)) { scheduler = period; } if (!scheduler || typeof scheduler.schedule !== 'function') { diff --git a/src/operators/combineLatest-static.ts b/src/operators/combineLatest-static.ts index c64fcfeb97..90e2defcbc 100644 --- a/src/operators/combineLatest-static.ts +++ b/src/operators/combineLatest-static.ts @@ -2,6 +2,7 @@ import {Observable} from '../Observable'; import {ArrayObservable} from '../observables/ArrayObservable'; import {CombineLatestOperator} from './combineLatest-support'; import {Scheduler} from '../Scheduler'; +import {isScheduler} from '../util/isScheduler'; /** * Combines the values from observables passed as arguments. This is done by subscribing @@ -16,7 +17,7 @@ import {Scheduler} from '../Scheduler'; export function combineLatest(...observables: Array | ((...values: Array) => R) | Scheduler>): Observable { let project, scheduler; - if (typeof (observables[observables.length - 1]).schedule === 'function') { + if (isScheduler(observables[observables.length - 1])) { scheduler = observables.pop(); } diff --git a/src/operators/concat-static.ts b/src/operators/concat-static.ts index bf23eed2da..f129c49707 100644 --- a/src/operators/concat-static.ts +++ b/src/operators/concat-static.ts @@ -3,6 +3,7 @@ import {Scheduler} from '../Scheduler'; import {immediate} from '../schedulers/immediate'; import {MergeAllOperator} from './mergeAll-support'; import {ArrayObservable} from '../observables/ArrayObservable'; +import {isScheduler} from '../util/isScheduler'; /** * Joins multiple observables together by subscribing to them one at a time and merging their results @@ -14,7 +15,7 @@ import {ArrayObservable} from '../observables/ArrayObservable'; export function concat(...observables: Array | Scheduler>): Observable { let scheduler: Scheduler = immediate; let args = observables; - if (typeof (args[observables.length - 1]).schedule === 'function') { + if (isScheduler(args[observables.length - 1])) { scheduler = args.pop(); } diff --git a/src/operators/concat.ts b/src/operators/concat.ts index 14d80205e8..58929ca445 100644 --- a/src/operators/concat.ts +++ b/src/operators/concat.ts @@ -1,6 +1,7 @@ import {Observable} from '../Observable'; import {Scheduler} from '../Scheduler'; import {CoreOperators} from '../CoreOperators'; +import {isScheduler} from '../util/isScheduler'; /** * Joins this observable with multiple other observables by subscribing to them one at a time, starting with the source, @@ -13,7 +14,7 @@ import {CoreOperators} from '../CoreOperators'; export function concat(...observables: (Observable | Scheduler)[]): Observable { let args = observables; args.unshift(this); - if (args.length > 1 && typeof args[args.length - 1].schedule === 'function') { + if (args.length > 1 && isScheduler(args[args.length - 1])) { args.splice(args.length - 2, 0, 1); } return (>Observable.fromArray(args)).mergeAll(1); diff --git a/src/operators/merge-static.ts b/src/operators/merge-static.ts index f6ea141845..bb3241e7b9 100644 --- a/src/operators/merge-static.ts +++ b/src/operators/merge-static.ts @@ -3,12 +3,13 @@ import {Observable} from '../Observable'; import {ArrayObservable} from '../observables/ArrayObservable'; import {MergeAllOperator} from './mergeAll-support'; import {immediate} from '../schedulers/immediate'; +import {isScheduler} from '../util/isScheduler'; export function merge(...observables: Array | Scheduler | number>): Observable { let concurrent = Number.POSITIVE_INFINITY; let scheduler: Scheduler = immediate; let last: any = observables[observables.length - 1]; - if (typeof last.schedule === 'function') { + if (isScheduler(last)) { scheduler = observables.pop(); if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') { concurrent = observables.pop(); diff --git a/src/operators/startWith.ts b/src/operators/startWith.ts index acb665483e..06ae81b102 100644 --- a/src/operators/startWith.ts +++ b/src/operators/startWith.ts @@ -4,10 +4,11 @@ import {ArrayObservable} from '../observables/ArrayObservable'; import {ScalarObservable} from '../observables/ScalarObservable'; import {EmptyObservable} from '../observables/EmptyObservable'; import {concat} from './concat-static'; +import {isScheduler} from '../util/isScheduler'; export function startWith(...array: (T | Scheduler)[]): Observable { let scheduler = array[array.length - 1]; - if (scheduler && typeof scheduler.schedule === 'function') { + if (isScheduler(scheduler)) { array.pop(); } else { scheduler = void 0;