UNPKG

@reactivex/ix-esnext-esm

Version:

The Interactive Extensions for JavaScript

50 lines (48 loc) 1.38 kB
import { toObserver } from '../util/toobserver'; import { observable as symbolObservable } from '../observer'; class BooleanSubscription { constructor() { this.isUnsubscribed = false; } unsubscribe() { this.isUnsubscribed = true; } } class AsyncIterableObservable { constructor(source) { this._source = source; } [symbolObservable]() { return this; } subscribe(next, error, complete) { const observer = toObserver(next, error, complete); const subscription = new BooleanSubscription(); const it = this._source[Symbol.asyncIterator](); const f = () => { it.next() .then(({ value, done }) => { if (!subscription.isUnsubscribed) { if (done) { observer.complete(); } else { observer.next(value); f(); } } }) .catch(err => { if (!subscription.isUnsubscribed) { observer.error(err); } }); }; f(); return subscription; } } export function toObservable(source) { return new AsyncIterableObservable(source); } //# sourceMappingURL=toobservable.mjs.map