diff options
Diffstat (limited to 'node_modules/rxjs/dist/esm/internal/operators/windowCount.js')
| -rw-r--r-- | node_modules/rxjs/dist/esm/internal/operators/windowCount.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/node_modules/rxjs/dist/esm/internal/operators/windowCount.js b/node_modules/rxjs/dist/esm/internal/operators/windowCount.js new file mode 100644 index 0000000..6597452 --- /dev/null +++ b/node_modules/rxjs/dist/esm/internal/operators/windowCount.js @@ -0,0 +1,40 @@ +import { Subject } from '../Subject'; +import { operate } from '../util/lift'; +import { createOperatorSubscriber } from './OperatorSubscriber'; +export function windowCount(windowSize, startWindowEvery = 0) { + const startEvery = startWindowEvery > 0 ? startWindowEvery : windowSize; + return operate((source, subscriber) => { + let windows = [new Subject()]; + let starts = []; + let count = 0; + subscriber.next(windows[0].asObservable()); + source.subscribe(createOperatorSubscriber(subscriber, (value) => { + for (const window of windows) { + window.next(value); + } + const c = count - windowSize + 1; + if (c >= 0 && c % startEvery === 0) { + windows.shift().complete(); + } + if (++count % startEvery === 0) { + const window = new Subject(); + windows.push(window); + subscriber.next(window.asObservable()); + } + }, () => { + while (windows.length > 0) { + windows.shift().complete(); + } + subscriber.complete(); + }, (err) => { + while (windows.length > 0) { + windows.shift().error(err); + } + subscriber.error(err); + }, () => { + starts = null; + windows = null; + })); + }); +} +//# sourceMappingURL=windowCount.js.map
\ No newline at end of file |
