| import { SchedulerLike } from '../types'; |
| import { Observable } from '../Observable'; |
| import { executeSchedule } from '../util/executeSchedule'; |
| |
| export function scheduleAsyncIterable<T>(input: AsyncIterable<T>, scheduler: SchedulerLike) { |
| if (!input) { |
| throw new Error('Iterable cannot be null'); |
| } |
| return new Observable<T>((subscriber) => { |
| executeSchedule(subscriber, scheduler, () => { |
| const iterator = input[Symbol.asyncIterator](); |
| executeSchedule( |
| subscriber, |
| scheduler, |
| () => { |
| iterator.next().then((result) => { |
| if (result.done) { |
| // This will remove the subscriptions from |
| // the parent subscription. |
| subscriber.complete(); |
| } else { |
| subscriber.next(result.value); |
| } |
| }); |
| }, |
| 0, |
| true |
| ); |
| }); |
| }); |
| } |