diff --git a/src/CoreOperators.ts b/src/CoreOperators.ts index f262c579b26..70ead563c13 100644 --- a/src/CoreOperators.ts +++ b/src/CoreOperators.ts @@ -75,7 +75,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; - throttle?: (delay: number, scheduler?: Scheduler) => Observable; + throttleTime?: (delay: number, scheduler?: Scheduler) => Observable; timeout?: (due: number | Date, errorToSend?: any, scheduler?: Scheduler) => Observable; timeoutWith?: (due: number | Date, withObservable: Observable, scheduler?: Scheduler) => Observable | Observable; toArray?: () => Observable; diff --git a/src/Observable.ts b/src/Observable.ts index d8602e51ec6..ffe050aac5a 100644 --- a/src/Observable.ts +++ b/src/Observable.ts @@ -228,7 +228,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; - throttle: (delay: number, scheduler?: Scheduler) => Observable; + throttleTime: (delay: number, scheduler?: Scheduler) => Observable; timeout: (due: number | Date, errorToSend?: any, scheduler?: Scheduler) => Observable; timeoutWith: (due: number | Date, withObservable: Observable, scheduler?: Scheduler) => Observable | Observable; toArray: () => Observable; diff --git a/src/Rx.KitchenSink.ts b/src/Rx.KitchenSink.ts index 064480827bb..395037279e7 100644 --- a/src/Rx.KitchenSink.ts +++ b/src/Rx.KitchenSink.ts @@ -285,8 +285,8 @@ observableProto.take = take; import {takeUntil} from './operators/takeUntil'; observableProto.takeUntil = takeUntil; -import {throttle} from './operators/throttle'; -observableProto.throttle = throttle; +import {throttleTime} from './operators/throttleTime'; +observableProto.throttleTime = throttleTime; import {timeInterval} from './operators/extended/timeInterval'; observableProto.timeInterval = timeInterval; diff --git a/src/Rx.ts b/src/Rx.ts index 6485b998eb1..fe7c04983b3 100644 --- a/src/Rx.ts +++ b/src/Rx.ts @@ -239,8 +239,8 @@ observableProto.take = take; import {takeUntil} from './operators/takeUntil'; observableProto.takeUntil = takeUntil; -import {throttle} from './operators/throttle'; -observableProto.throttle = throttle; +import {throttleTime} from './operators/throttleTime'; +observableProto.throttleTime = throttleTime; import {timeout} from './operators/timeout'; observableProto.timeout = timeout; diff --git a/src/operators/throttle.ts b/src/operators/throttleTime.ts similarity index 77% rename from src/operators/throttle.ts rename to src/operators/throttleTime.ts index b473fc901e6..623c26d5975 100644 --- a/src/operators/throttle.ts +++ b/src/operators/throttleTime.ts @@ -4,7 +4,7 @@ import {Scheduler} from '../Scheduler'; import {Subscription} from '../Subscription'; import {nextTick} from '../schedulers/nextTick'; -export function throttle(delay: number, scheduler: Scheduler = nextTick) { +export function throttleTime(delay: number, scheduler: Scheduler = nextTick) { return this.lift(new ThrottleOperator(delay, scheduler)); } @@ -28,24 +28,21 @@ class ThrottleSubscriber extends Subscriber { _next(value: T) { if (!this.throttled) { - this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.delay, { value, subscriber: this })); + this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.delay, { subscriber: this })); + this.destination.next(value); } } - throttledNext(value: T) { - this.clearThrottle(); - this.destination.next(value); - } - clearThrottle() { const throttled = this.throttled; if (throttled) { throttled.unsubscribe(); this.remove(throttled); + this.throttled = null; } } } -function dispatchNext({ value, subscriber }) { - subscriber.throttledNext(value); +function dispatchNext({ subscriber }) { + subscriber.clearThrottle(); } \ No newline at end of file