.debounceTimeが関数を受け入れることを示唆したドキュメントはどこにありますか?よく次のシグネチャを持つhereを文書化されています
public debounceTime(dueTime: number, scheduler: Scheduler): Observable
あなたが探している方法は、マニュアルに従っている、debounceである:ここで
Emits a value from the source Observable only after a particular time span determined by another Observable has passed without another source emission.
It's like debounceTime, but the time span of emission silence is determined by a second Observable.
はそれが署名だ次のとおりです。
public debounce(durationSelector: function(value: T): Observable | Promise): Observable
したがって、あなたがしている動作を達成するために必要なことは、debouncの間隔を提供する別のObservableを設定することだけですe。
新しい待機時間を提供するためにアプリケーションロジックに従って.next()を呼び出すことができる別のSubjectを使用してこれを行うことができます。
let debounceSubject = new Subject<number>();
let debounceObservable$ = debounceSubject.asObservable();
// Somewhere else in code you'll do debounceSubject.next(1000); for example
そして最後に、あなたはこのようなあなたの新しいデバウンスを設定します:.debounceを使用しての
this.searchSubject.asObservable()
.debounce(() => debounceObservable$).subscribe(x => this.emitFilters())
より多くの例がjsBinとjsFiddleでの作業例を含めhere(rxjsを学ぶための素晴らしいウェブサイトを)見つけることができます。
フィードバックいただきありがとうございます。私はデバウンスのためのドキュメントを見ましたが、あなたが言ったように、それは観測可能物を使用します。私はそれを完全に見ていない限り(精神的な変化の観察が強制されている可能性が高い)、実際には私が望むことはしませんが、それらのドキュメントのおかげで、takeLast - > reduce - > filterのように見えます。どのように減らすかを理解することができます... – RhoVisions
私はあなたの解決策を試してみることにしました。必要なSubjectを観測可能な状態にして、それを新しい値に適切に渡していても、デバウンスは行いません。どういうわけか、それも他のコードを壊したので、私は一般的な使用/構造が間違っていると推測しています:/助けてくれてありがとう。 – RhoVisions
あなたが今どこにいるのか、あるいはPlunkerか何かのためのより完全なコードサンプルを与えることができれば、私は見て、助けてみることができます –