当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir Agent.start_link用法及代码示例


Elixir语言中 Agent.start_link 相关用法介绍如下。

用法:

start_link(fun, options \\ [])
@spec start_link((() -> term()), GenServer.options()) :: on_start()

使用给定函数启动与当前进程链接的代理。

这通常用于启动代理作为监督树的一部分。

生成代理后,将在服务器进程中调用给定的函数fun,并应返回初始代理状态。请注意,在给定函数返回之前, start_link/2 不会返回。

选项

:name 选项用于注册,如模块文档中所述。

如果存在 :timeout 选项,则允许代理最多花费给定的毫秒数进行初始化,否则它将被终止并且启动函数将返回 {:error, :timeout}

如果:debug选项存在,相应的函数在:sys 模块将被调用。

如果存在 :spawn_opt 选项,则其值将作为选项传递给底层进程,如 Process.spawn/4

返回值

如果服务器创建和初始化成功,该函数返回 {:ok, pid} ,其中 pid 是服务器的 PID。如果具有指定名称的代理已存在,则该函数返回带有该进程 PID 的{:error, {:already_started, pid}}

如果给定的函数回调失败,则函数返回 {:error, reason}

例子

iex> {:ok, pid} = Agent.start_link(fn -> 42 end)
iex> Agent.get(pid, fn state -> state end)
42

iex> {:error, {exception, _stacktrace}} = Agent.start(fn -> raise "oops" end)
iex> exception
%RuntimeError{message: "oops"}

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Agent.start_link(fun, options \\ [])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。