3

我正在尝试限制 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

我想过将UI驱动程序保存在全局中Var并从那里发送新的操作,但这对我来说似乎很 hacky。

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

4

1 回答 1

3

这就是你可能需要创建一个EventSourcefor 的东西。AnEventSource允许您订阅有点像信号/流/事件侦听器的东西,然后引发操作。

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

于 2015-12-15T17:23:36.600 回答