2017-11-01 22 views
1

reflex-frpとreflex-domの使用ビヘイビアに基づいてイベントを遅延させる必要があります。 私は:Reflex:ビヘイビアに基づくイベントの遅延

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())) 

ただし、戻りイベントは発生しません。私がここで作っている簡単な間違いがあるのでしょうか、それとも全体のアプローチが再考する必要がありますか?

答えて

0

eDelsMで定義されたウィジェットがイベントe0からアクティブになっている場合、遅延を作成するために次のイベント、e1まで待機するため、遅延は発生しません。しかし、イベントの次のインスタンスが起動するときに、e1eDelsMウィジェットの新しいインスタンスがアクティブになり、イベントの次のインスタンスであるe2の待機を開始します。解決策は、eDelsMが再作成されるとすぐに新しいイベントをトリガーすることです。

eDelsM = (\t -> getPostBuild >>= delay t) <$> b <@ e 
関連する問題