在Elm中同时运行两个命令

时间:2016-08-20 09:00:07

标签: javascript elm

Elm中,特别是应用首次启动时Elm Architectureinit函数可以返回执行的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,但它们似乎适合运行多个任务,而不是特定的命令。

2 个答案:

答案 0 :(得分:47)

使用Platform.Cmd.batchdocs):

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