如何在 Elm 中暂停测量时间?

How to pause for a measured time in Elm?

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

有没有办法在 Elm 中 "pause"?然后我可以显示,暂停,然后删除图像来实现效果。

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

您可以创建一个新的 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 )

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