2017-04-11 51 views

回答

4

如果我理解正確,您需要一個緩衝事件的操作符,直到某個時間段內沒有事件發生,然後重複所有緩衝的事件。我想試試這個:

設置這一新的運營商可觀察的原型:

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(...)