在应用程序首次启动时Elm,特别是使用Elm Architecture,该init函数可以返回Cmd Msg执行的函数.我们可以使用它来发送http请求或通过Elm端口向本机Javascript发送消息.
我的问题是,如何发送应该执行的多个命令init?
例如,我可以做类似的事情:
init : (Model, Cmd Msg)
init =
(Model "" [], (Ports.messageToJs "Hello JS"))
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
url : String
url =
"http://some-api-url.com"
...
fetchCmd : Cmd Msg
fetchCmd =
Task.perform FetchError FetchSuccess fetchTask
init : (Model, Cmd Msg)
init =
(Model "" [], fetchCmd)
Run Code Online (Sandbox Code Playgroud)
如何从同一时间返回两个命令init?
我已经看过了Task.sequence,Task.parallel但是它们看起来很适合运行多个任务,而不是特别是命令.
Sør*_*ois 50
使用Platform.Cmd.batch(docs):
init : (Model, Cmd Msg)
init =
( Model "" []
, Cmd.batch [fetchCmd, Ports.messageToJs "Hello JS")]
)
Run Code Online (Sandbox Code Playgroud)
按照Sören所说的做,或者使用更新的等效“ bang” -syntax:
init : (Model, Cmd Msg)
init =
( Model "" [] )
! [fetchCmd, Ports.messageToJs "Hello JS"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4806 次 |
| 最近记录: |