2017-09-13 8 views
3

J'essaye de créer une page Web simple utilisant Elm qui implique l'affichage d'une image pendant une quantité mesurée de temps, telle qu'une seconde ou une milliseconde.Comment faire une pause pour un temps mesuré dans Elm?

Existe-t-il un moyen de "mettre en pause" dans Elm? Ensuite, je pourrais afficher, mettre en pause, puis retirer l'image pour obtenir l'effet. J'ai remarqué le clock example mais cela semble se mettre à jour chaque fois que l'horloge de la machine déclenche une nouvelle seconde, alors que je cherche quelque chose qui peut faire une pause pour mettre à jour un certain temps (comme une fraction de seconde) après l'heure de début .

Répondre

2

Vous pouvez créer une nouvelle valeur Msg qui déclenche les changements d'URL (de l'image). Créez un abonnement via Timer.every Vous pouvez ajouter un drapeau dans votre modèle pour indiquer si vous souhaitez conserver la mise à jour de l'image, si c'est ce que vous voulez.

Exemple:

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) 
2

Le paquet elm-delay fournit une abstraction belle vue sur les minuteries. Pour créer un Cmd RemoveImage qui se déclenche en une seconde, faites simplement after 1 second RemoveImage.