UNPKG

994 BJavaScriptView Raw
1import { AsyncIterableX } from './asynciterablex';
2export class BufferAsyncIterable extends AsyncIterableX {
3 constructor(source, count, skip) {
4 super();
5 this._source = source;
6 this._count = count;
7 this._skip = skip;
8 }
9 async *[Symbol.asyncIterator]() {
10 let buffers = [], i = 0;
11 for await (let item of this._source) {
12 if (i % this._skip === 0) {
13 buffers.push([]);
14 }
15 for (let buffer of buffers) {
16 buffer.push(item);
17 }
18 if (buffers.length > 0 && buffers[0].length === this._count) {
19 yield buffers.shift();
20 }
21 i++;
22 }
23 while (buffers.length > 0) {
24 yield buffers.shift();
25 }
26 }
27}
28export function buffer(source, count, skip) {
29 if (skip == null) {
30 skip = count;
31 }
32 return new BufferAsyncIterable(source, count, skip);
33}
34
35//# sourceMappingURL=buffer.mjs.map