Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果elixir中有错误,调用多个API并返回错误列表的好方法是什么?_Elixir - Fatal编程技术网

如果elixir中有错误,调用多个API并返回错误列表的好方法是什么?

如果elixir中有错误,调用多个API并返回错误列表的好方法是什么?,elixir,Elixir,我有一个elixir项目,我想实现一个函数,它将调用多个外部API并返回错误列表 假设我有几个调用api函数: 通过_api_a创建_ 通过_api_b创建_ 通过_api_c创建_ ... 每个api函数将返回:ok或error。我的主函数将返回[错误a,错误b,错误d,…] 目前我的解决方案是使用++连接每个API调用。我有一个case函数来控制返回 例如: def create_via_api_a do case API.create(xxx) do :ok -> []

我有一个elixir项目,我想实现一个函数,它将调用多个外部API并返回错误列表

假设我有几个调用api函数:

通过_api_a创建_ 通过_api_b创建_ 通过_api_c创建_ ... 每个api函数将返回:ok或error。我的主函数将返回[错误a,错误b,错误d,…]

目前我的解决方案是使用++连接每个API调用。我有一个case函数来控制返回

例如:

def create_via_api_a do
  case API.create(xxx) do
    :ok -> []
    error -> error
  end
end

但它看起来有点奇怪。我不确定是否有任何长生不老药的习惯用法来实现这一点?例如管道或with等?

您可能正在寻找API调用是否可以并行执行:它们彼此独立

在某种程度上,沿着这些路线是可行的

原料药 |>Task.async_stream&&1.createxxx |>枚举减少[],fn :ok,acc->acc 错误,acc->[错误| acc] 终止 使用不同API的示例

[{API1,:创建,[42]},{API2,:调用,[]}] |>Task.async_streamfn{m,f,a}->applym,f,a end |>枚举减少[],fn :ok,acc->acc 错误,acc->[错误| acc] 终止 如果应该同步完成,则省略任务调用

原料药 |>Enum.reduce[],fn{m,f,a},acc-> case applym,f,a do :ok,acc->acc 错误,acc->[错误| acc] 终止 终止 |>反向枚举 最后,如果要在第一个错误时停止,请使用