@lifaon/rx-js-light
Version:
Blazing fast Observables
18 lines (17 loc) • 487 B
JavaScript
export function bufferObservable(subscribe, closingObservable) {
return emit => {
let currentBuffer = [];
const unsubscribeOfClosingObservable = closingObservable(() => {
const buffer = currentBuffer;
currentBuffer = [];
emit(buffer);
});
const unsubscribeOfSourceObservable = subscribe(value => {
currentBuffer.push(value);
});
return () => {
unsubscribeOfClosingObservable();
unsubscribeOfSourceObservable();
};
};
}