在Elm
中,特别是应用首次启动时Elm Architecture,init
函数可以返回执行的Cmd Msg
。我们可以使用它来发送http请求或通过Elm ports向本机Javascript发送消息。
我的问题是,如何发送应在init
中执行的多个命令?
例如我可以做类似的事情:
init : (Model, Cmd Msg)
init =
(Model "" [], (Ports.messageToJs "Hello JS"))
我可以这样做:
url : String
url =
"http://some-api-url.com"
...
fetchCmd : Cmd Msg
fetchCmd =
Task.perform FetchError FetchSuccess fetchTask
init : (Model, Cmd Msg)
init =
(Model "" [], fetchCmd)
如何从init
同时返回两个命令?
我见过Task.sequence
甚至Task.parallel
,但它们似乎适合运行多个任务,而不是特定的命令。
答案 0 :(得分:47)
使用Platform.Cmd.batch
(docs):
init : (Model, Cmd Msg)
init =
( Model "" []
, Cmd.batch [fetchCmd, Ports.messageToJs "Hello JS")]
)
答案 1 :(得分:5)
按照Sören的说法,或使用更新的,等同的“爆炸”-syntax:
Get-AzureRmMarketplaceTerms -Publisher trendmicro -Product deep-security-vm-byol -Name dxxnbyol | Set-AzureRmMarketplaceTerms -Accept