2017-04-13 7 views
0

私は観察可能なcanContinue: Subject<boolean>があります。私は100msの遅れの後に次の電話をしたい、rxjsでこれをどうやってやるの?次の呼び出しを遅らせる方法rxjs

例:this.canContinue.wait(100).next(true);

私はsetTimeoutをを使用することができますが、RXは、私に建てられた道を持っている場合は代わりにそれを使用することを好むだろう。

編集:ああ、申し訳ありませんが、ObservableではなくSubjectである必要があります。 遅延演算子はちょっと私が望むことをしますが、私が購読するときにそれを追加します。

this.canContinue.delay(100).subscribe(s => //do something) しかし、それは毎回遅れますが、私は時々遅延したいだけです。

私の場合、フォームの別のオプションに移動するためのボタンがありますが、オプションを選択すると自動的に次のオプションが表示されますが、遅延が欲しいのは、次のオプション。

+3

'Observables'は' next'メソッドを持っていない、それは 'Observers'です:

Rx.Observable.of(true,false,true).mergeMap(value => { return value === true ? Rx.Observable.of(value).delay(100) : Rx.Observable.of(value); }).subscribe(console.log); false true true 

これは、すべてを遅らせます。私はあなたが '遅れて欲しい 'と思っていますが、これで何を達成しようとしているのかを知らないと言うのは難しいです。 – paulpdaniels

答えて

0

@paulpdanielsが指摘するように、あなたの例は少し間違っているので、私はあなたが望むものを推測しようとしています。要素の放出を遅らせるにはいくつかの方法があります。これにより、true要素の放出のみが遅延します。

Rx.Observable.of(true,false,true).delay(100).subscribe(console.log) 
+0

私はいくつかの文脈を追加して、自分が何をやっているのかを説明しました。@mkulke – Devcon

+0

@Devcon>しかし、それは毎回遅れます。 – mkulke

+0

@Devcon:_sometimes_はどういう意味ですか?それは放出された値に依存しているのですか?この場合、上記の解決策は動作します: 'mergeMap'そして値に応じてObservableまたはObservableを返します。 _sometimes_があなたのプログラムの他のエンティティに依存しているならば、Observableにそのエンティティをラップし、 'withLatestFrom(otherEntity $、...)'を使用してオブザーバブルをフィルタリングするために使うべきでしょう。 – mkulke

関連する問題