If I understand correctly, you need an operator that buffers events until an event occurs for a certain period of time, and then repeats all buffered events. I would try this:
Install this new statement in the Observable prototype:
function bufferedDebounceTime(time) { return Observable.create(subscriber => { let buffer = []; return this.do(x => buffer.push(x)) .debounceTime(time) .flatMap(() => buffer) .do(() => buffer = []) .subscribe( value => subscriber.next(value), err => subscriber.error(err), () => subscriber.complete() ); }); } Observable.prototype.bufferedDebounceTime = bufferedDebounceTime;
Then use it as an operator:
yourSourceObservable.bufferedDebounceTime(1000).subscribe(...)
Zahic source share