1

使用 reflex-frp 和 reflex-dom 我需要根据行为延迟事件。我有:

delayEvent :: (MonadWidget t m, Reflex t) 
           => Event t () -> Behavior t NominalDiffTime -> m (Event t ())
delayEvent e b = switch . current <$> widgetHold (return never) eDelsM
  where
    eDelsM = (`delay` e) <$> b <@ e -- Event t (m (Event t ()))

但是返回事件永远不会触发。我在这里犯了一个简单的错误还是整个方法需要重新考虑?

4

1 回答 1

0

显然,延迟永远不会触发,因为当定义的小部件eDelsM从 event 处于活动状态时e0,它将等到下一个事件,e1以创建延迟。但是,在事件的下一个实例触发时,小部件e1的新实例eDelsM将变为活动状态并开始等待事件的下一个实例,e2。解决方案是在重新创建后立即触发新事件eDelsM

eDelsM = (\t -> getPostBuild >>= delay t) <$> b <@ e   
于 2017-11-30T16:35:02.050 回答