Как сделать паузу на измеренное время в вязе?

Я пытаюсь создать простую веб-страницу с помощью Elm, которая включает отображение изображения в течение определенного промежутка времени, например, секунды или миллисекунды.

Есть ли способ "сделать паузу" в вязе? Затем я мог отобразить, приостановить, а затем удалить изображение, чтобы добиться эффекта.

Я заметил пример с часами, но он обновляется каждый раз, когда часы компьютера запускают новую секунду, в то время как я ищу что-то, что может приостановить обновление установленного времени (например, доли секунды) после времени запуска.

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 )

elm-delay Пакет обеспечивает хорошую абстракцию над таймерами. Чтобы создать Cmd RemoveImage что срабатывает в одну секунду, вы просто делаете after 1 second RemoveImage,

Другие вопросы по тегам