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


Elixir Task.completed用法及代码示例


Elixir语言中 Task.completed 相关用法介绍如下。

用法:

completed(result)
(从 1.13.0 开始)
@spec completed(any()) :: t()

启动一个使用给定 result 立即完成的任务。

async/1 不同,此任务不会产生链接进程。它可以像任何其他任务一样被等待或屈服。

用法

在某些情况下,创建一个"completed" 任务来表示已经运行并生成结果的任务很有用。例如,在处理数据时,您可能能够在分派某些输入进行进一步处理之前确定某些输入是无效的:

def process(data) do
  tasks =
    for entry <- data do
      if invalid_input?(entry) do
        Task.completed({:error, :invalid_input})
      else
        Task.async(fn -> further_process(entry) end)
      end
    end

  Task.await_many(tasks)
end

在许多情况下,可以避免使用 Task.completed/1 ,而是直接返回结果。当一组输入将部分同步和部分异步处理时,您通常应该只在使用混合异步时才需要此变体。

相关用法


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