UNPKG

rxjs

Version:

Reactive Extensions for modern JavaScript

41 lines 1.15 kB
import { Subscriber } from '../Subscriber'; export function takeWhile(predicate) { return (source) => source.lift(new TakeWhileOperator(predicate)); } class TakeWhileOperator { constructor(predicate) { this.predicate = predicate; } call(subscriber, source) { return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate)); } } class TakeWhileSubscriber extends Subscriber { constructor(destination, predicate) { super(destination); this.predicate = predicate; this.index = 0; } _next(value) { const destination = this.destination; let result; try { result = this.predicate(value, this.index++); } catch (err) { destination.error(err); return; } this.nextOrComplete(value, result); } nextOrComplete(value, predicateResult) { const destination = this.destination; if (Boolean(predicateResult)) { destination.next(value); } else { destination.complete(); } } } //# sourceMappingURL=takeWhile.js.map