2016-12-02 6 views
3

ほぼ間違いなくXY problemですが、私がしようとしているフレーズの簡潔な方法を考えることはできません。XY prob:複数のメッセージを同時に発行するにはどうすればよいですか?

私はテキストエリアを持っています。このテキスト領域内で、ユーザーはID番号のコンマ区切りリストを入力します。彼らは "フェッチ"をクリックすると、複数の文字列値を取得するために、入力をコンマで分割し、それらの文字列値のそれぞれは、APIへのHTTPリクエストで項目に関する情報を取得する関数に渡されます。

これは私がつまずく場所です。今私は、これらの部分があります。

  • getInfo : String -> Cmd Msgを、IDの文字列を取得し、最終的に私は一種の私のテキストエリアの入力を取り、String.split "," |> List.map (\id -> getInfo id)を言いたいFetch idStr -> (model, getInfo idStr)

Http.send

  • type Msg = Fetch Stringを起動します。私に与えられるList Msgをどうすればいいのか分からない限り、私はそれらのメッセージをそれぞれ消したいですが、エルムはそのようには機能しません。

    読んでいるうちに私はCmd.batchを見つけましたが、実際にはドキュメントには何も情報がありませんので、私が望むものか、それを使う方法がわかりません。

  • 答えて

    5

    はい、Cmd.batchは複数のcmdsを1つのcmdにバッチ処理できます。例えば

    (新しいメッセージを介し:FetchAll):

    FetchAll idsStr -> 
        let 
        cmds = String.split "," idsStr |> List.map (\id -> getInfo id) 
        in (model, Cmd.batch cmds) 
    

    も、(model, Cmd.batch cmds)model ! cmds

    のように書くことができます。
    関連する問題