import { Observable } from '../Observable'; import { Subscription } from '../Subscription'; import { iterator as Symbol_iterator } from '../symbol/iterator'; import { subscribeToIterable } from '../util/subscribeToIterable'; export function fromIterable(input, scheduler) { if (!input) { throw new Error('Iterable cannot be null'); } if (!scheduler) { return new Observable(subscribeToIterable(input)); } else { return new Observable(subscriber => { const sub = new Subscription(); let iterator; sub.add(() => { if (iterator && typeof iterator.return === 'function') { iterator.return(); } }); sub.add(scheduler.schedule(() => { iterator = input[Symbol_iterator](); sub.add(scheduler.schedule(function () { if (subscriber.closed) { return; } let value; let done; try { const result = iterator.next(); value = result.value; done = result.done; } catch (err) { subscriber.error(err); return; } if (done) { subscriber.complete(); } else { subscriber.next(value); this.schedule(); } })); })); return sub; }); } } //# sourceMappingURL=fromIterable.js.map