Мы можем использовать Promise.race для ожидания первого полученного результата в цепочке thenable
.Модуль Task , кажется, еще не поддерживает его, Task.sequence является только эквивалентом Promise.all .
Non-thenable Solution demo:
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"