Kri*_*itz 6 haskell reactive-banana
该execute函数的文档Reactive.Banana.Frameworks说"无法保证执行操作的顺序".
我不确定这里的排序是什么意思.由于事件只会同时触发一个动作,因此这里没有太多的命令可以保证,因此我可以想象的最可能的情况是:
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
...
Run Code Online (Sandbox Code Playgroud)
非保证我能想象这里是的执行顺序a和b切换,从而b最先被执行.如果我们假设a并且b都修改某些小部件的行为(使用liftIO)然后注册它们相应的事件处理程序(取消注册先前注册的那个),则切换执行顺序a并且b将是致命的,因为它将使小部件处于它的状态不会解雇它应该开火的处理者.因为execute如果我的方案是正确的,我没有看到哪些用例仍然有用,我认为文档实际上意味着其他的东西.
有人可以澄清一下文档在这里要说的内容吗?