@reactivex/ix-esnext-esm
Version:
The Interactive Extensions for JavaScript
27 lines (25 loc) • 773 B
JavaScript
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