正如the upgrade guide中所述,Effects
正在被这种类似申请类似玩家的新事物Cmd
取代。我没有看到任何关于Effects.tick
可能隐藏的线索或者如何重新实现的线索。
从事物的外观来看,Process.sleep
可能是正确答案,例如
Task.perform errorHandler (\x -> x) <| Process.sleep
<| 500 * Time.millisecond
允许进程在发出下一条消息/动作之前等待500毫秒。我不知道从长远来看这是否会替换 Effects.tick。
答案 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
消息的内容。