发送来自Eff in eval in Halogen的行动?

时间:2015-12-15 13:27:20

标签: purescript halogen

我正试图在purescript-halogen中限制搜索字段。到目前为止我所拥有的:

eval (Search search next) = do
  State st <- get

  -- clear last timeout
  liftEff' $ maybe (return unit) T.clearTimeout st.searchTimeout

  -- new timeout
  t <- liftEff' $ T.timeout 1000 $ return unit -- how to send action from here???
  modify (\(State s) -> State $ s { searchTimeout = Just t })

  pure next

我考虑过在全局Var中保存UI驱动程序并从那里发送新动作,但这对我来说似乎非常糟糕。

或许还有另一种方法可以做到这一点?

1 个答案:

答案 0 :(得分:3)

这是您可能需要创建EventSource的东西。 EventSource允许您订阅类似信号/流/事件监听器的内容,然后提出操作。

这不是您想要的,但是使用EventSource运行基于时间间隔的计时器的示例:https://github.com/slamdata/slamdata/blob/2ab704302292406e838e1a6e5541aa06ad47e952/src/Notebook/Cell/Component.purs#L213-L217