我正试图在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驱动程序并从那里发送新动作,但这对我来说似乎非常糟糕。
或许还有另一种方法可以做到这一点?
答案 0 :(得分:3)
这是您可能需要创建EventSource
的东西。 EventSource
允许您订阅类似信号/流/事件监听器的内容,然后提出操作。
这不是您想要的,但是使用EventSource
运行基于时间间隔的计时器的示例:https://github.com/slamdata/slamdata/blob/2ab704302292406e838e1a6e5541aa06ad47e952/src/Notebook/Cell/Component.purs#L213-L217