NetanelBasal
7/13/2018 - 10:17 AM

o-6.ts

class Observable {

  constructor(private subscriptionFn: Function) {
    this.subscriptionFn = subscriptionFn;
  }

  subscribe(observer: Observer) {
    return this.subscriptionFn(observer);
  }

  map(projectionFunction) {
    return new Observable(observer => {
      return this.subscribe({
        next(val) { observer.next(projectionFunction(val)) },
        error(e) { observer.error(e) },
        complete() { observer.complete() }
      });
    });
  }

}