几乎绝对是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
,但在文档中没有任何关于它的信息,所以我不确定这是我想要的或者如何使用它。
答案 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