Elixir 任務(wù)

2023-12-15 14:00 更新

任務(wù)建立在生成函數(shù)的上層,提供了更好的錯誤報告的反省機制:

iex(1)> Task.start fn -> raise "oops" end
{:ok, #PID<0.55.0>}

15:22:33.046 [error] Task #PID<0.55.0> started from #PID<0.53.0> terminating
** (RuntimeError) oops
    (elixir) lib/task/supervised.ex:74: Task.Supervised.do_apply/2
    (stdlib) proc_lib.erl:239: :proc_lib.init_p_do_apply/3
Function: #Function<20.90072148/0 in :erl_eval.expr/5>
    Args: []

spawn/1spawn_link/1不同的是,我們用Task.start/1Task.start_link/1時會返回{:ok, pid},而不是只有PID.這使得任務(wù)可以被用于管理者樹上.Task提供了諸如Task.async/1Task.await/1這樣的便捷函數(shù),以及緩解分布性的功能.

我們將在Mix和OTP介紹中探索這些功能,現(xiàn)在只需要記住任務(wù)提供了更好的錯誤報告.


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號