效果。替换榆木0.17

时间:2016-05-12 19:58:48

标签: thread-sleep elm

正如the upgrade guide中所述,Effects正在被这种类似申请类似玩家的新事物Cmd取代。我没有看到任何关于Effects.tick可能隐藏的线索或者如何重新实现的线索。

从事物的外观来看,Process.sleep可能是正确答案,例如

Task.perform errorHandler (\x -> x) <| Process.sleep
                                    <| 500 * Time.millisecond

允许进程在发出下一条消息/动作之前等待500毫秒。我不知道从长远来看这是否会替换 Effects.tick。

1 个答案:

答案 0 :(得分:3)

Effect.tick功能被AnimationFrame取代。

你基本上订阅了一组msg的时间或差异。并作出相应的反应

div

我选择直接将Time diffs作为消息发送,并在import Html exposing (..) import Html.App as App import AnimationFrame import Time exposing (Time, second) main = App.program { init = Model 0 0 ! [] , update = \msg model -> update msg model ! [] , view = view , subscriptions = \_ -> AnimationFrame.diffs identity} type alias Model = { timeSinceLastIncrement : Time , counter : Int } incrementTime = 1*second update diff {timeSinceLastIncrement, counter} = if timeSinceLastIncrement > incrementTime then Model 0 (counter+1) else Model (timeSinceLastIncrement+diff) counter view {counter} = div [] [text (toString counter)] update中解压缩模型的结构,以便更轻松地访问组件。在更复杂的应用程序中,您可能会收到类似view消息的内容。