如果没有其他事件发生,是否可以延迟运行序列,并同时返回所有值?
我需要某种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(...)

09-10 12:15