123456789101112131415161718192021222324252627282930313233343536373839 |
- import { Subscriber } from '../Subscriber';
- import { async } from '../scheduler/async';
- export function sampleTime(period, scheduler = async) {
- return (source) => source.lift(new SampleTimeOperator(period, scheduler));
- }
- class SampleTimeOperator {
- constructor(period, scheduler) {
- this.period = period;
- this.scheduler = scheduler;
- }
- call(subscriber, source) {
- return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));
- }
- }
- class SampleTimeSubscriber extends Subscriber {
- constructor(destination, period, scheduler) {
- super(destination);
- this.period = period;
- this.scheduler = scheduler;
- this.hasValue = false;
- this.add(scheduler.schedule(dispatchNotification, period, { subscriber: this, period }));
- }
- _next(value) {
- this.lastValue = value;
- this.hasValue = true;
- }
- notifyNext() {
- if (this.hasValue) {
- this.hasValue = false;
- this.destination.next(this.lastValue);
- }
- }
- }
- function dispatchNotification(state) {
- let { subscriber, period } = state;
- subscriber.notifyNext();
- this.schedule(state, period);
- }
- //# sourceMappingURL=sampleTime.js.map
|