@reactivex/ix-esnext-esm
Version:
The Interactive Extensions for JavaScript
42 lines (40 loc) • 1.25 kB
JavaScript
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