2017-09-28 3 views
0

Je veux faire quelque chose de très non-fonctionnel et faire une requête HTTP en elm sans traiter aucune sorte de réponse. Fondamentalement, quelque chose comme ceci:Demande HTTP sans demande dans Elm 0.18

testView : Html Msg 
testView = 
    div [] [ 
    button [onClick TestAction] [text "Test Action"] 
    ] 

update : Msg -> Model -> (Model, Cmd Msg) 
update msg model = 
    case msg of 
     ... 
     TestAction -> 
      (model, testActionCmd) 
     ... 

import Http 
import HttpBuilder exposing (..) 
... 
testActionCmd : Cmd Msg 
testActionCmd = 
    ("http://localhost:4000/fakeurl") 
    |> get -- this is a side effect; unrelated to the Msg below 
    Cmd.none -- this is what I want to return 

Est-il possible de faire quelque chose comme ça dans Elm?

Répondre

5

En résumé, non, vous ne pourrez pas le faire (pas sans écrire votre propre gestionnaire d'effets ou en utilisant des ports). Le "problème" est que le module Http vous permet de créer un Task que vous devez ensuite convertir en un Cmd pour effectuer la tâche. Mais pour passer d'un Task à un Cmd, vous devez fournir un Msg. Voir http://package.elm-lang.org/packages/elm-lang/core/5.1.1/Task

Donc, ce que vous devez faire est de créer un de ces messages Noop.