-import { OuterSubscriber } from '../OuterSubscriber';
-import { subscribeToResult } from '../util/subscribeToResult';
+import { SimpleOuterSubscriber, innerSubscribe, SimpleInnerSubscriber } from '../innerSubscribe';
export const defaultThrottleConfig = {
leading: true,
trailing: false
};
export function throttle(durationSelector, config = defaultThrottleConfig) {
- return (source) => source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing));
+ return (source) => source.lift(new ThrottleOperator(durationSelector, !!config.leading, !!config.trailing));
}
class ThrottleOperator {
constructor(durationSelector, leading, trailing) {
return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));
}
}
-class ThrottleSubscriber extends OuterSubscriber {
+class ThrottleSubscriber extends SimpleOuterSubscriber {
constructor(destination, durationSelector, _leading, _trailing) {
super(destination);
this.destination = destination;
this.throttle(_sendValue);
}
this._hasValue = false;
- this._sendValue = null;
+ this._sendValue = undefined;
}
throttle(value) {
const duration = this.tryDurationSelector(value);
if (!!duration) {
- this.add(this._throttled = subscribeToResult(this, duration));
+ this.add(this._throttled = innerSubscribe(duration, new SimpleInnerSubscriber(this)));
}
}
tryDurationSelector(value) {
if (_throttled) {
_throttled.unsubscribe();
}
- this._throttled = null;
+ this._throttled = undefined;
if (_trailing) {
this.send();
}
}
- notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {
+ notifyNext() {
this.throttlingDone();
}
notifyComplete() {