12345678910111213141516171819202122232425262728293031323334 |
- import { operate } from '../util/lift';
- import { noop } from '../util/noop';
- import { createOperatorSubscriber } from './OperatorSubscriber';
- import { innerFrom } from '../observable/innerFrom';
- export function debounce(durationSelector) {
- return operate(function (source, subscriber) {
- var hasValue = false;
- var lastValue = null;
- var durationSubscriber = null;
- var emit = function () {
- durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
- durationSubscriber = null;
- if (hasValue) {
- hasValue = false;
- var value = lastValue;
- lastValue = null;
- subscriber.next(value);
- }
- };
- source.subscribe(createOperatorSubscriber(subscriber, function (value) {
- durationSubscriber === null || durationSubscriber === void 0 ? void 0 : durationSubscriber.unsubscribe();
- hasValue = true;
- lastValue = value;
- durationSubscriber = createOperatorSubscriber(subscriber, emit, noop);
- innerFrom(durationSelector(value)).subscribe(durationSubscriber);
- }, function () {
- emit();
- subscriber.complete();
- }, undefined, function () {
- lastValue = durationSubscriber = null;
- }));
- });
- }
- //# sourceMappingURL=debounce.js.map
|