當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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 \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。