我有许多事件被合并到一个执行某些命令的 observable 中。如果命令成功,则会产生一些结果。此外,应记录该命令。
就代码而言,这看起来像
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为每个订阅的观察者执行一次。这意味着副作用将重复出现。
您能否建议另一种方法来实现相同的结果而无需exec_action
执行两次?如果可能的话,我希望避免使用可变变量。