import { Observable } from '../Observable'; import { Subscription } from '../Subscription'; import { observable as Symbol_observable } from '../symbol/observable'; import { InteropObservable, SchedulerLike, Subscribable } from '../types'; export function scheduleObservable(input: InteropObservable, scheduler: SchedulerLike) { return new Observable(subscriber => { const sub = new Subscription(); sub.add(scheduler.schedule(() => { const observable: Subscribable = input[Symbol_observable](); sub.add(observable.subscribe({ next(value) { sub.add(scheduler.schedule(() => subscriber.next(value))); }, error(err) { sub.add(scheduler.schedule(() => subscriber.error(err))); }, complete() { sub.add(scheduler.schedule(() => subscriber.complete())); }, })); })); return sub; }); }