Every new change
This commit is contained in:
78
node_modules/rxjs/_esm2015/internal/operators/bufferCount.js
generated
vendored
Normal file
78
node_modules/rxjs/_esm2015/internal/operators/bufferCount.js
generated
vendored
Normal file
@ -0,0 +1,78 @@
|
||||
import { Subscriber } from '../Subscriber';
|
||||
export function bufferCount(bufferSize, startBufferEvery = null) {
|
||||
return function bufferCountOperatorFunction(source) {
|
||||
return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));
|
||||
};
|
||||
}
|
||||
class BufferCountOperator {
|
||||
constructor(bufferSize, startBufferEvery) {
|
||||
this.bufferSize = bufferSize;
|
||||
this.startBufferEvery = startBufferEvery;
|
||||
if (!startBufferEvery || bufferSize === startBufferEvery) {
|
||||
this.subscriberClass = BufferCountSubscriber;
|
||||
}
|
||||
else {
|
||||
this.subscriberClass = BufferSkipCountSubscriber;
|
||||
}
|
||||
}
|
||||
call(subscriber, source) {
|
||||
return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));
|
||||
}
|
||||
}
|
||||
class BufferCountSubscriber extends Subscriber {
|
||||
constructor(destination, bufferSize) {
|
||||
super(destination);
|
||||
this.bufferSize = bufferSize;
|
||||
this.buffer = [];
|
||||
}
|
||||
_next(value) {
|
||||
const buffer = this.buffer;
|
||||
buffer.push(value);
|
||||
if (buffer.length == this.bufferSize) {
|
||||
this.destination.next(buffer);
|
||||
this.buffer = [];
|
||||
}
|
||||
}
|
||||
_complete() {
|
||||
const buffer = this.buffer;
|
||||
if (buffer.length > 0) {
|
||||
this.destination.next(buffer);
|
||||
}
|
||||
super._complete();
|
||||
}
|
||||
}
|
||||
class BufferSkipCountSubscriber extends Subscriber {
|
||||
constructor(destination, bufferSize, startBufferEvery) {
|
||||
super(destination);
|
||||
this.bufferSize = bufferSize;
|
||||
this.startBufferEvery = startBufferEvery;
|
||||
this.buffers = [];
|
||||
this.count = 0;
|
||||
}
|
||||
_next(value) {
|
||||
const { bufferSize, startBufferEvery, buffers, count } = this;
|
||||
this.count++;
|
||||
if (count % startBufferEvery === 0) {
|
||||
buffers.push([]);
|
||||
}
|
||||
for (let i = buffers.length; i--;) {
|
||||
const buffer = buffers[i];
|
||||
buffer.push(value);
|
||||
if (buffer.length === bufferSize) {
|
||||
buffers.splice(i, 1);
|
||||
this.destination.next(buffer);
|
||||
}
|
||||
}
|
||||
}
|
||||
_complete() {
|
||||
const { buffers, destination } = this;
|
||||
while (buffers.length > 0) {
|
||||
let buffer = buffers.shift();
|
||||
if (buffer.length > 0) {
|
||||
destination.next(buffer);
|
||||
}
|
||||
}
|
||||
super._complete();
|
||||
}
|
||||
}
|
||||
//# sourceMappingURL=bufferCount.js.map
|
Reference in New Issue
Block a user