diff options
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/operators/debounceTime.js')
| -rw-r--r-- | node_modules/rxjs/dist/esm/internal/operators/debounceTime.js | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/operators/debounceTime.js b/node_modules/rxjs/dist/esm/internal/operators/debounceTime.js new file mode 100644 index 0000000..28c058a --- /dev/null +++ b/node_modules/rxjs/dist/esm/internal/operators/debounceTime.js @@ -0,0 +1,43 @@ +import { asyncScheduler } from '../scheduler/async'; +import { operate } from '../util/lift'; +import { createOperatorSubscriber } from './OperatorSubscriber'; +export function debounceTime(dueTime, scheduler = asyncScheduler) { + return operate((source, subscriber) => { + let activeTask = null; + let lastValue = null; + let lastTime = null; + const emit = () => { + if (activeTask) { + activeTask.unsubscribe(); + activeTask = null; + const value = lastValue; + lastValue = null; + subscriber.next(value); + } + }; + function emitWhenIdle() { + const targetTime = lastTime + dueTime; + const now = scheduler.now(); + if (now < targetTime) { + activeTask = this.schedule(undefined, targetTime - now); + subscriber.add(activeTask); + return; + } + emit(); + } + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + lastValue = value; + lastTime = scheduler.now(); + if (!activeTask) { + activeTask = scheduler.schedule(emitWhenIdle, dueTime); + subscriber.add(activeTask); + } + }, () => { + emit(); + subscriber.complete(); + }, undefined, () => { + lastValue = activeTask = null; + })); + }); +} +//# sourceMappingURL=debounceTime.js.map
\ No newline at end of file |
