いくつかのコマンドを実行する 1 つのオブザーバブルにマージされる多数のイベントがあります。コマンドが成功すると、なんらかの結果が発生します。さらに、コマンドをログに記録する必要があります。
コード的にはこんな感じ
let mevts = modifyingevents |> Observable.filter exec_action
|> Observable.add (fun action -> self.OutlineEdited <- true)
関数はexec_action
、ツリービューの編集などの副作用をもたらします。これが成功した場合、プロパティOutlineEdited
は に設定されtrue
ます。
私はこれを次のようなものでフォローすることを望んでいました
mevts |> Observable.scan (fun log action -> action::log) []
しかし、Observable.filterは、サブスクライブしたobserverごとに1回実行されることがわかりました。副作用が繰り返されることを意味します。
exec_action
2回実行せずに同じ結果を達成する別の方法を提案できますか? 可能であれば、可変変数を使用する必要がないようにしたいと考えています。