UNPKG

702 BJavaScriptView Raw
1import { AsyncIterableX } from './asynciterablex';
2export class ThrottleAsyncIterable extends AsyncIterableX {
3 constructor(source, time) {
4 super();
5 this._source = source;
6 this._time = time;
7 }
8 async *[Symbol.asyncIterator]() {
9 let currentTime, previousTime;
10 for await (const item of this._source) {
11 currentTime = Date.now();
12 if (!previousTime || currentTime - previousTime > this._time) {
13 previousTime = currentTime;
14 yield item;
15 }
16 }
17 }
18}
19export function throttle(source, time) {
20 return new ThrottleAsyncIterable(source, time);
21}
22
23//# sourceMappingURL=throttle.mjs.map