1 import { Observable } from '../Observable';
2 import { SchedulerLike } from '../types';
3 import { Subscription } from '../Subscription';
4 import { iterator as Symbol_iterator } from '../symbol/iterator';
6 export function scheduleIterable<T>(input: Iterable<T>, scheduler: SchedulerLike) {
8 throw new Error('Iterable cannot be null');
10 return new Observable<T>(subscriber => {
11 const sub = new Subscription();
12 let iterator: Iterator<T>;
14 // Finalize generators
15 if (iterator && typeof iterator.return === 'function') {
19 sub.add(scheduler.schedule(() => {
20 iterator = input[Symbol_iterator]();
21 sub.add(scheduler.schedule(function () {
22 if (subscriber.closed) {
28 const result = iterator.next();
32 subscriber.error(err);
36 subscriber.complete();
38 subscriber.next(value);