如何在Elm暂停一段时间?

时间:2017-09-13 23:04:32

标签: elm pause

我正在尝试使用Elm创建一个简单的网页,其中包括在一段时间内显示图像,例如秒或毫秒。

有没有办法暂停"在榆树?然后我可以显示,暂停,然后删除图像以达到效果。

我注意到了clock example,但每当机器的时钟触发新的秒时,它似乎都会更新,而我正在寻找可以暂停以更新设定时间的东西(例如第二个)在开始时间之后。

2 个答案:

答案 0 :(得分:2)

您可以创建一个新的Msg值来触发(图像的)url更改。 并通过Timer.every创建订阅。 您可以在模型中添加标记,以指示是否继续更新图像,如果这是您想要的。

示例:

subscriptions : Model -> Sub Msg
subscriptions model =
    if model.keepUpdating then
        Time.every (3 * second) (\x -> UpdateImage)
    else
        Sub.none


update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        UpdateImage ->
            ( { model | image_url = "http://to_new_image/..." }, Cmd.none )

答案 1 :(得分:2)

elm-delay包提供了一个很好的抽象定时器。要创建一秒触发的Cmd RemoveImage,您只需执行after 1 second RemoveImage