Code coverage report for src/observable/SubscribeOnObservable.ts

Statements: 100% (29 / 29)      Branches: 87.5% (14 / 16)      Functions: 100% (5 / 5)      Lines: 100% (22 / 22)      Ignored: none     

All files » src/observable/ » SubscribeOnObservable.ts
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39      1 1 1   1 2 1     1 8     11 12 12 11 11 1   11 1       1 8 8 8   8       1  
import {Scheduler} from '../Scheduler';
import {Subscriber} from '../Subscriber';
import {Subscription} from '../Subscription';
import {Observable} from '../Observable';
import {asap} from '../scheduler/asap';
import {isNumeric} from '../util/isNumeric';
 
export class SubscribeOnObservable<T> extends Observable<T> {
  static create<T>(source: Observable<T>, Edelay: number = 0, Escheduler: Scheduler = asap): Observable<T> {
    return new SubscribeOnObservable(source, delay, scheduler);
  }
 
  static dispatch<T>({ source, subscriber }): Subscription<T> {
    return source.subscribe(subscriber);
  }
 
  constructor(public source: Observable<T>,
              private delayTime: number = 0,
              private scheduler: Scheduler = asap) {
    super();
    if (!isNumeric(delayTime) || delayTime < 0) {
      this.delayTime = 0;
    }
    if (!scheduler || typeof scheduler.schedule !== 'function') {
      this.scheduler = asap;
    }
  }
 
  _subscribe(subscriber: Subscriber<T>) {
    const delay = this.delayTime;
    const source = this.source;
    const scheduler = this.scheduler;
 
    subscriber.add(scheduler.schedule(SubscribeOnObservable.dispatch, delay, {
      source, subscriber
    }));
  }
}