UNPKG

@reactivex/ix-esnext-esm

Version:

The Interactive Extensions for JavaScript

42 lines (40 loc) 1.25 kB
import { AsyncIterableX } from '../asynciterablex'; import { toObserver } from '../../util/toobserver'; export class TapAsyncIterable extends AsyncIterableX { constructor(source, observer) { super(); this._source = source; this._observer = observer; } async *[Symbol.asyncIterator]() { const it = this._source[Symbol.asyncIterator](); while (1) { let next; try { next = await it.next(); } catch (e) { if (this._observer.error) { await this._observer.error(e); } throw e; } if (next.done) { if (this._observer.complete) { await this._observer.complete(); } break; } if (this._observer.next) { await this._observer.next(next.value); } yield next.value; } } } export function tap(observerOrNext, error, complete) { return function tapOperatorFunction(source) { return new TapAsyncIterable(source, toObserver(observerOrNext, error, complete)); }; } //# sourceMappingURL=tap.mjs.map