在卤素中从 Eff 发送动作?

Send action from Eff in eval in 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

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

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

您可能需要为此创建一个 EventSourceEventSource 允许您订阅有点像 signal/stream/event 侦听器的内容,然后引发操作。

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