UNPKG

@reactivex/ix-esnext-esm

Version:

The Interactive Extensions for JavaScript

27 lines (25 loc) 773 B
import { AsyncIterableX } from '../asynciterablex'; export class ThrottleAsyncIterable extends AsyncIterableX { constructor(source, time) { super(); this._source = source; this._time = time; } async *[Symbol.asyncIterator]() { let currentTime; let previousTime; for await (const item of this._source) { currentTime = Date.now(); if (!previousTime || currentTime - previousTime > this._time) { previousTime = currentTime; yield item; } } } } export function throttle(time) { return function throttleOperatorFunction(source) { return new ThrottleAsyncIterable(source, time); }; } //# sourceMappingURL=throttle.mjs.map