diff options
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/operators/bufferCount.js')
| -rw-r--r-- | node_modules/rxjs/dist/esm/internal/operators/bufferCount.js | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/operators/bufferCount.js b/node_modules/rxjs/dist/esm/internal/operators/bufferCount.js new file mode 100644 index 0000000..2cf2880 --- /dev/null +++ b/node_modules/rxjs/dist/esm/internal/operators/bufferCount.js @@ -0,0 +1,37 @@ +import { operate } from '../util/lift'; +import { createOperatorSubscriber } from './OperatorSubscriber'; +import { arrRemove } from '../util/arrRemove'; +export function bufferCount(bufferSize, startBufferEvery = null) { + startBufferEvery = startBufferEvery !== null && startBufferEvery !== void 0 ? startBufferEvery : bufferSize; + return operate((source, subscriber) => { + let buffers = []; + let count = 0; + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + let toEmit = null; + if (count++ % startBufferEvery === 0) { + buffers.push([]); + } + for (const buffer of buffers) { + buffer.push(value); + if (bufferSize <= buffer.length) { + toEmit = toEmit !== null && toEmit !== void 0 ? toEmit : []; + toEmit.push(buffer); + } + } + if (toEmit) { + for (const buffer of toEmit) { + arrRemove(buffers, buffer); + subscriber.next(buffer); + } + } + }, () => { + for (const buffer of buffers) { + subscriber.next(buffer); + } + subscriber.complete(); + }, undefined, () => { + buffers = null; + })); + }); +} +//# sourceMappingURL=bufferCount.js.map
\ No newline at end of file |
