【发布时间】:2023-04-05 12:51:01
【问题描述】:
我们可以使用Promise.race 等待thenable 链上第一个到达的结果。 Task 模块似乎还不支持它,Task.sequence 仅相当于 Promise.all。
无法实现的解决方案演示:
import Process
import Task
init () =
( Nothing, Cmd.batch [ after 2 "2nd", after 1 "1st" ] )
after seconds name =
Process.sleep (1000 * seconds)
|> Task.map (always name)
|> Task.perform Done
type Msg
= Done String
update (Done name) model =
case model of
Nothing ->
( Debug.log name <| Just name, Cmd.none )
_ ->
( Debug.log name model, Cmd.none )
main =
Platform.worker
{ init = init
, update = update
, subscriptions = always Sub.none
}
运行它,按预期输出:
1st: Just "1st"
2nd: Just "1st"
【问题讨论】:
标签: task elm elm-architecture