XY概率:如何同时发出一堆消息?

时间:2016-12-02 01:11:12

标签: elm

几乎绝对是XY problem,但我想不出用一种简洁的方式来表达我想要做的事情。

我有一个textarea。在该文本区域内,用户输入以逗号分隔的ID号列表。当他们单击“Fetch”时,我将他们的输入分成逗号,以获取多个字符串值,并且每个字符串值都会传递给一个函数,该函数向我的API发出HTTP请求以获取有关该项的信息。

这就是我绊倒的地方。现在我有这些部分:

  • getInfo : String -> Cmd Msg,获取ID字符串并最终触发Http.send
  • type Msg = Fetch String,其中Fetch idStr -> (model, getInfo idStr)

我想接受我的textarea输入并说出String.split "," |> List.map (\id -> getInfo id)。除了我不知道如何处理会给我的List Msg之外,我想解雇每一个消息,但是Elm不会这样做吗?

在阅读时我找到了Cmd.batch,但在文档中没有任何关于它的信息,所以我不确定这是我想要的或者如何使用它。

1 个答案:

答案 0 :(得分:5)

是的,Cmd.batch可以将多个cmd批量放入一个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