2

いくつかのオブザーバブルはとても困っています。彼らはあなたに聞いて、聞いて、彼らが言わなければならないことすべてを聞いてほしいと思っています。本当に数秒のイベントしか処理できない場合はどうなりますか?次のようなものを書いていただけませんか

mouseMoves.TakeFor(TimeSpan.FromSeconds(2))

概念的には、これにより、特定の時間が経過するまでイベントを渡し、その後、基になるオブザーバブルのサブスクライブを解除して、独自のシーケンスが完了したことを示すサブジェクトが作成されます。手でそのように書くことができると思いますが、これを行う既存の演算子がいくつかあるに違いないようです。私はそれが私が望むことをObservable.TimeOutすることを望んでいました、例えば使用する

mouseMoves.Timeout(TimeSpan.FromSeconds(2), Observable.Empty<T>())

しかし、それが行っているのは、観測間の期間が指定された値よりも長い場合、観測量をタイムアウトにすることだと思います。これも便利ですが、私が求めているものではありません。

4

1 に答える 1

4

必要なようですねTakeUntil

var source = Observable.FromEventPattern(...);

source.TakeUntil(Observable.Timer(TimeSpan.FromSeconds(2))
   .Subscribe(_ => {});
于 2011-09-23T09:27:20.080 に答える