Reactive.Banana.Frameworks
中execute
函数的文档说“无法保证执行操作的顺序。”
我不确定这里的排序是什么意思。由于事件只会同时触发一个动作,因此这里没有太多的命令可以保证,因此我可以想象的最可能的情况是:
a :: MomentIO (Event t)
a = ...
b :: MomentIO (Event t)
b = ...
makeEvent :: MomentIO (Event (MomentIO (Event t))
makeEvent = fromAddHandler $ ... -- Some AddHandler that first fires a
-- and later fires b
network :: MomentIO ()
network = do
...
newEvents <- makeEvent
ts <- execute newEvents >>= switchE
...
我可以想象的非保证是a
和b
的执行顺序被切换,因此b
首先被执行。如果我们假设a
和b
都修改了某个小部件的行为(使用liftIO
)然后注册其相应的事件处理程序(取消注册以前注册的小部件),则切换执行顺序a
和b
将是致命的,因为它会使小部件处于不触发它应该触发的处理程序的状态。由于我没有看到哪些用例execute
在我的方案是正确的情况下仍然有用,我认为文档实际上意味着其他内容。
有人可以澄清一下文档在这里要说的内容吗?