Как сделать паузу на измеренное время в вязе?
Я пытаюсь создать простую веб-страницу с помощью 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
,