如果没有其他事件发生,是否可以延迟运行序列,并同时返回所有值?
我需要某种debounceTime
函数,但它将返回所有值。
最佳答案
如果我理解正确,您需要一个运算符来缓冲事件,直到在某段时间内没有事件发生,然后重复所有缓冲的事件。我想试试这个:
将此新运算符设置为可观测原型:
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;
然后将其用作运算符:
yourSourceObservable.bufferedDebounceTime(1000).subscribe(...)