Init
This module defines the app initialization task. This is a special kind of task
that can only be passed as the result of an application initialization. You'll typically
use this module in order to initialize sub-systems like FileSystem
or ChildProcess
.
type alias Task a =
Task a
This is like a Task
, but can only be run as part of initializing your
program. This is usually used for values which should be provided to your program,
and only your program, as opposed to third-party packages.
await :
Task a -> (a -> Task b) -> Task b
This let's you wait for the completion of an Task
before either starting
your application, or begin initialization of another Task
.
Init.await Terminal.initialize <| \termConfig ->
Init.await FileSystem.initialize <| \fileSystemConfig ->
-- Start your own program with the values from Terminal and FileSystem
Node.startProgram
{ model = 1
, commands = Cmd.none
}
awaitTask :
Task Never a -> (a -> Task b) -> Task b
This let's you wait for the completion of a Task
before either starting
your application, or begin initialization of another Task
.
Init.await Terminal.initialize <| \termConfig ->
Init.awaitTask Task.now <| \time ->
-- Start your own program with the values from Terminal and FileSystem
Node.startProgram
{ model = time
, commands = Cmd.none
}