XY 探针:如何同时发出一堆消息?
XY prob: How do I issue a bunch of msgs simultaneously?
几乎肯定是 XY problem,但我想不出一种简洁的方式来表达我想做的事情。
我有一个文本区域。在此文本区域内,用户输入以逗号分隔的 ID 号列表。当他们单击 "Fetch" 时,我用逗号分隔他们的输入,以获取多个字符串值,并且每个字符串值都被传递给一个函数,该函数向我的 API 发出 HTTP 请求以获取有关该项目的信息.
这就是我绊倒的地方。现在我有这些部分:
getInfo : String -> Cmd Msg
,接受一个 ID 字符串并最终触发 Http.send
type Msg = Fetch String
,其中 Fetch idStr -> (model, getInfo idStr)
我有点想接受我的文本区域的输入并说 String.split "," |> List.map (\id -> getInfo id)
。除了我不知道如何处理会给我的 List Msg
,我想关闭所有这些消息,但 Elm 不是那样工作的吗?
在阅读时我发现 Cmd.batch
,但文档中并没有关于它的任何信息,所以我不确定这是否是我想要的或如何使用它。
是的,Cmd.batch
可以将多个命令批处理到一个命令中。
例如(通过新消息:FetchAll
):
FetchAll idsStr ->
let
cmds = String.split "," idsStr |> List.map (\id -> getInfo id)
in (model, Cmd.batch cmds)
另外,(model, Cmd.batch cmds)
可以写成model ! cmds
几乎肯定是 XY problem,但我想不出一种简洁的方式来表达我想做的事情。
我有一个文本区域。在此文本区域内,用户输入以逗号分隔的 ID 号列表。当他们单击 "Fetch" 时,我用逗号分隔他们的输入,以获取多个字符串值,并且每个字符串值都被传递给一个函数,该函数向我的 API 发出 HTTP 请求以获取有关该项目的信息.
这就是我绊倒的地方。现在我有这些部分:
getInfo : String -> Cmd Msg
,接受一个 ID 字符串并最终触发Http.send
type Msg = Fetch String
,其中Fetch idStr -> (model, getInfo idStr)
我有点想接受我的文本区域的输入并说 String.split "," |> List.map (\id -> getInfo id)
。除了我不知道如何处理会给我的 List Msg
,我想关闭所有这些消息,但 Elm 不是那样工作的吗?
在阅读时我发现 Cmd.batch
,但文档中并没有关于它的任何信息,所以我不确定这是否是我想要的或如何使用它。
是的,Cmd.batch
可以将多个命令批处理到一个命令中。
例如(通过新消息:FetchAll
):
FetchAll idsStr ->
let
cmds = String.split "," idsStr |> List.map (\id -> getInfo id)
in (model, Cmd.batch cmds)
另外,(model, Cmd.batch cmds)
可以写成model ! cmds