2017-10-04 8 views
1

私は、次のような更新機能を持っています。パターンマッチ、すべてのHTTPエラーが

どうやら、_だから

update : Msg -> Model -> (Model, Cmd Msg) 
update msg model = 
    case msg of 
     NewImages (Ok images) -> 
      ({model|images = images}, Cmd.none) 

     NewUsers (Ok users) -> 
      ({model|users = users}, Cmd.none) 

     _ (Err error) -> 
      myFunction model 

     [...] 

のようなパターンの唯一の始まりを一致させるために使用することはできません、何が私の更新機能ですべてのHttp.Errorと一致する適切な方法でしょうか?

答えて

5

Http.Errorを更新機能にどのようにマッチさせるかわかりませんが、Http.Errorをすべて専用のメッセージにマップできます。

type Msg 
    = NewImages (List String) 
    | ... 
    | HttpError Http.Error 

send : (a -> Msg) -> Request Http.Error a -> Cmd Msg 
send tagger request = 
    let 
     makeMsg result = 
      case result of 
       Ok a -> 
        tagger a 

       Err error -> 
        HttpError error 
    in 
     Http.send makeMsg request 

-- and make an HTTP request like: 
send NewImages request 

すべてのHTTPエラーを一致させることができます。

update msg model = 
    case msg of 
     NewImages images -> 
      ({ model | images = images }, Cmd.none) 

     ... 

     HttpError error -> 
      myFunction error 
関連する問題