UNPKG

@reactivex/ix-esnext-esm

Version:

The Interactive Extensions for JavaScript

44 lines (42 loc) 1.15 kB
import { IterableX } from '../iterablex'; import { returnIterator } from '../../util/returniterator'; export class CatchWithIterable extends IterableX { constructor(source, handler) { super(); this._source = source; this._handler = handler; } *[Symbol.iterator]() { let err; let hasError = false; const it = this._source[Symbol.iterator](); while (1) { let c = {}; try { c = it.next(); if (c.done) { returnIterator(it); break; } } catch (e) { err = this._handler(e); hasError = true; returnIterator(it); break; } yield c.value; } if (hasError) { for (const item of err) { yield item; } } } } export function catchError(handler) { return function catchWithOperatorFunction(source) { return new CatchWithIterable(source, handler); }; } //# sourceMappingURL=catcherror.mjs.map