You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
1019 B
31 lines
1019 B
4 years ago
|
import { OuterSubscriber } from '../OuterSubscriber';
|
||
|
import { subscribeToResult } from '../util/subscribeToResult';
|
||
|
export function buffer(closingNotifier) {
|
||
|
return function bufferOperatorFunction(source) {
|
||
|
return source.lift(new BufferOperator(closingNotifier));
|
||
|
};
|
||
|
}
|
||
|
class BufferOperator {
|
||
|
constructor(closingNotifier) {
|
||
|
this.closingNotifier = closingNotifier;
|
||
|
}
|
||
|
call(subscriber, source) {
|
||
|
return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));
|
||
|
}
|
||
|
}
|
||
|
class BufferSubscriber extends OuterSubscriber {
|
||
|
constructor(destination, closingNotifier) {
|
||
|
super(destination);
|
||
|
this.buffer = [];
|
||
|
this.add(subscribeToResult(this, closingNotifier));
|
||
|
}
|
||
|
_next(value) {
|
||
|
this.buffer.push(value);
|
||
|
}
|
||
|
notifyNext(outerValue, innerValue, outerIndex, innerIndex, innerSub) {
|
||
|
const buffer = this.buffer;
|
||
|
this.buffer = [];
|
||
|
this.destination.next(buffer);
|
||
|
}
|
||
|
}
|
||
|
//# sourceMappingURL=buffer.js.map
|