From 27de080148d55d012a37d04078f2e15d90ed0b07 Mon Sep 17 00:00:00 2001 From: OJ Kwon Date: Thu, 3 Dec 2015 14:10:48 -0800 Subject: [PATCH] feat(takeWhile): remove thisArg relates to #878 --- spec/operators/takeWhile-spec.js | 17 ----------------- src/CoreOperators.ts | 2 +- src/Observable.ts | 2 +- src/operator/takeWhile.ts | 18 +++++------------- 4 files changed, 7 insertions(+), 32 deletions(-) diff --git a/spec/operators/takeWhile-spec.js b/spec/operators/takeWhile-spec.js index 179c8e42e0..a538e56713 100644 --- a/spec/operators/takeWhile-spec.js +++ b/spec/operators/takeWhile-spec.js @@ -154,23 +154,6 @@ describe('Observable.prototype.takeWhile()', function () { expectSubscriptions(e1.subscriptions).toBe(e1subs); }); - it('should pass element thisArg to predicate', function () { - var e1 = hot('--a-^-b--c--d--e--|'); - var e1subs = '^ ! '; - var expected = '--b--c--| '; - - function predicate() { - this.take = function (value) { - return value !== 'd'; - }; - } - - var result = e1.takeWhile(function (v) { return this.take(v); }, new predicate()); - - expectObservable(result).toBe(expected); - expectSubscriptions(e1.subscriptions).toBe(e1subs); - }); - it('should take elements until unsubscribed', function () { var e1 = hot('--a-^-b--c--d--e--|'); var unsub = '-----! '; diff --git a/src/CoreOperators.ts b/src/CoreOperators.ts index 986c42c187..c23c6a55cd 100644 --- a/src/CoreOperators.ts +++ b/src/CoreOperators.ts @@ -77,7 +77,7 @@ export interface CoreOperators { switchMapTo?: (observable: Observable, projectResult?: (x: T, y: any, ix: number, iy: number) => R) => Observable; take?: (count: number) => Observable; takeUntil?: (notifier: Observable) => Observable; - takeWhile?: (predicate: (value: T, index: number) => boolean, thisArg?: any) => Observable; + takeWhile?: (predicate: (value: T, index: number) => boolean) => Observable; throttle?: (durationSelector: (value: T) => Observable | Promise) => Observable; throttleTime?: (delay: number, scheduler?: Scheduler) => Observable; timeout?: (due: number | Date, errorToSend?: any, scheduler?: Scheduler) => Observable; diff --git a/src/Observable.ts b/src/Observable.ts index 7aa132d93f..8f37a028a9 100644 --- a/src/Observable.ts +++ b/src/Observable.ts @@ -239,7 +239,7 @@ export class Observable implements CoreOperators { switchMapTo: (observable: Observable, projectResult?: (x: T, y: any, ix: number, iy: number) => R) => Observable; take: (count: number) => Observable; takeUntil: (notifier: Observable) => Observable; - takeWhile: (predicate: (value: T, index: number) => boolean, thisArg?: any) => Observable; + takeWhile: (predicate: (value: T, index: number) => boolean) => Observable; throttle: (durationSelector: (value: T) => Observable | Promise) => Observable; throttleTime: (delay: number, scheduler?: Scheduler) => Observable; timeout: (due: number | Date, errorToSend?: any, scheduler?: Scheduler) => Observable; diff --git a/src/operator/takeWhile.ts b/src/operator/takeWhile.ts index 0af0ab5a11..53b4060681 100644 --- a/src/operator/takeWhile.ts +++ b/src/operator/takeWhile.ts @@ -3,34 +3,26 @@ import {Observable} from '../Observable'; import {Subscriber} from '../Subscriber'; import {tryCatch} from '../util/tryCatch'; import {errorObject} from '../util/errorObject'; -import {bindCallback} from '../util/bindCallback'; -export function takeWhile(predicate: (value: T, index: number) => boolean, - thisArg?: any): Observable { - return this.lift(new TakeWhileOperator(predicate, thisArg)); +export function takeWhile(predicate: (value: T, index: number) => boolean): Observable { + return this.lift(new TakeWhileOperator(predicate)); } class TakeWhileOperator implements Operator { - constructor(private predicate: (value: T, index: number) => boolean, - private thisArg?: any) { + constructor(private predicate: (value: T, index: number) => boolean) { } call(subscriber: Subscriber): Subscriber { - return new TakeWhileSubscriber(subscriber, this.predicate, this.thisArg); + return new TakeWhileSubscriber(subscriber, this.predicate); } } class TakeWhileSubscriber extends Subscriber { - private predicate: (value: T, index: number) => boolean; private index: number = 0; constructor(destination: Subscriber, - predicate: (value: T, index: number) => boolean, - thisArg?: any) { + private predicate: (value: T, index: number) => boolean) { super(destination); - if (typeof predicate === 'function') { - this.predicate = <(value: T, index: number) => boolean>bindCallback(predicate, thisArg, 2); - } } _next(value: T): void {