2017-04-11 4 views
5

他のイベントが来ていなければ、遅延を伴うシーケンスを実行し、一度にすべての値を戻すことはできますか?RxJS:debounceTimeすべての値を返します

debounceTime funcのようなものが必要ですが、すべての値が返されます。

答えて

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(...) 
観察可能なプロトタイプに

が設定されたこの新しい演算子を:私はこれをしようとするだろう

関連する問題