2017-09-28 3 views
0

Ich möchte etwas sehr unfunktionell machen und eine HTTP-Anfrage in Ulm machen, ohne irgendeine Art von Antwort zu verarbeiten. Im Grunde so etwas wie diese:HTTP-Anfrage ohne Anfrage in 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 

Gibt es eine Möglichkeit etwas wie dies in Elm zu tun?

Antwort

5

Kurz gesagt, nein, Sie werden das nicht können (nicht ohne Ihren eigenen Effektmanager zu schreiben oder Ports zu benutzen).

Das "Problem" ist, dass das Http Modul ermöglicht Ihnen, eine Task zu erstellen, die Sie dann in eine Cmd konvertieren müssen, um die Aufgabe auszuführen. Aber um von einer Task zu einer Cmd zu gehen, müssen Sie eine Msg bereitstellen. Siehe http://package.elm-lang.org/packages/elm-lang/core/5.1.1/Task

Also was Sie tun müssen, ist eine dieser Noop Nachrichten zu erstellen.