| import { Subscriber } from '../Subscriber'; |
| /** |
| * Returns an Observable that emits whether or not every item of the source satisfies the condition specified. |
| * |
| * @example <caption>A simple example emitting true if all elements are less than 5, false otherwise</caption> |
| * Observable.of(1, 2, 3, 4, 5, 6) |
| * .every(x => x < 5) |
| * .subscribe(x => console.log(x)); // -> false |
| * |
| * @param {function} predicate A function for determining if an item meets a specified condition. |
| * @param {any} [thisArg] Optional object to use for `this` in the callback. |
| * @return {Observable} An Observable of booleans that determines if all items of the source Observable meet the condition specified. |
| * @method every |
| * @owner Observable |
| */ |
| export function every(predicate, thisArg) { |
| return (source) => source.lift(new EveryOperator(predicate, thisArg, source)); |
| } |
| class EveryOperator { |
| constructor(predicate, thisArg, source) { |
| this.predicate = predicate; |
| this.thisArg = thisArg; |
| this.source = source; |
| } |
| call(observer, source) { |
| return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source)); |
| } |
| } |
| /** |
| * We need this JSDoc comment for affecting ESDoc. |
| * @ignore |
| * @extends {Ignored} |
| */ |
| class EverySubscriber extends Subscriber { |
| constructor(destination, predicate, thisArg, source) { |
| super(destination); |
| this.predicate = predicate; |
| this.thisArg = thisArg; |
| this.source = source; |
| this.index = 0; |
| this.thisArg = thisArg || this; |
| } |
| notifyComplete(everyValueMatch) { |
| this.destination.next(everyValueMatch); |
| this.destination.complete(); |
| } |
| _next(value) { |
| let result = false; |
| try { |
| result = this.predicate.call(this.thisArg, value, this.index++, this.source); |
| } |
| catch (err) { |
| this.destination.error(err); |
| return; |
| } |
| if (!result) { |
| this.notifyComplete(false); |
| } |
| } |
| _complete() { |
| this.notifyComplete(true); |
| } |
| } |
| //# sourceMappingURL=every.js.map |