在update
我希望每次调用Tick
时都调用Input
动作。
方案是用户在文本字段中输入值,在更新时,模型通过Input
更新,然后调用Tick
并在模型上执行更多内容。
在0.16我可以这样做:
Input query ->
({ model | query = query }, Effects.tick Tick)
Tick clockTime ->
-- do something with clockTime
我不确定如何在0.17
中执行此操作。
我不确定这是否是subscription
,如果是,你怎么能配置它来调用Input然后Action。
感谢任何帮助。
答案 0 :(得分:2)
在Task
下的Time
模块中,用于检索作为效果的当前时间的功能已移至Time.now
。
http://package.elm-lang.org/packages/elm-lang/core/4.0.1/Time#now
您可以通过进行以下更改来重现您的功能:
1)确保邮件中有NoOp
条消息。 Time.now
会返回一个我们知道永远不会失败的Task
,但我们仍然需要将失败的消息发送给Task.perform
type Msg
= Input String
| Tick Time
| NoOp
2)将Effects.tick Tick
替换为Time.now
和Task.perform
Input query ->
( { model | query = query }
, Time.now |> Task.perform (\_ -> NoOp) Tick
)
如果您不喜欢NoOp
消息,则还有其他方法,例如使用Debug.crash
中的performFailproof
或Task.Extra
(可在此处找到: http://package.elm-lang.org/packages/NoRedInk/elm-task-extra/2.0.0/Task-Extra#performFailproof)