私には2つのものがあります:Task<TResult> query
とIObservable<bool> toggle
を返す関数です。私が作成したいのはIObservable<TResult>
です。toggle
がtrue
になると、毎回query
が呼び出され、結果が返される無限ループが開始されます。次に、トグルがfalse
になると、無限ループが停止するはずです。タスク関数から観測可能な無限IObservableであり、観測可能に切り替えます
タスクから無限ループを作成する方法を読んだが、toggle
をオンとオフにする方法を理解できない。また、無限ループ内でquery
を実行することはできず、フィルタリングするだけです。 toggle
がfalse
の場合、クエリを呼び出すべきではありません。また、toggle
が偽になった場合には大丈夫です。query
がすでに開始されている場合、結果として得られる観測可能物は返されません。 toggle
がfalseの場合はquery
をキャンセルすることをお勧めしますが、必須ではありません。
私は自動的にテスト可能にしたいと思います。
私は正確に何をしたいんだと思う
おかげで、これは期待通りに動作するようです。 – Euphoric
こんにちは、ごめんなさい、私のフォローアップの質問を見てもらえますか?http://stackoverflow.com/questions/39993609/infinite-iobservable-from-task-function-and-toggle-observable-with-parameters – Euphoric
私はこの関数のテストを書こうとしています。私は 'Observable.FromAsync(()=> SomeFunction())'を 'Func> query(これは唯一の項目を返すコールドオブザーバブル)に置き換えたので、' TestScheduler'を使ってこの関数をテストすることができます。しかし、私は 'scheduler.Start'メソッドが何のメッセージも返さないという問題を抱えています。この方法が自動的にテストできることを確認できますか? –
Euphoric