如果elixir中有错误,调用多个API并返回错误列表的好方法是什么?
我有一个elixir项目,我想实现一个函数,它将调用多个外部API并返回错误列表 假设我有几个调用api函数: 通过_api_a创建_ 通过_api_b创建_ 通过_api_c创建_ ... 每个api函数将返回:ok或error。我的主函数将返回[错误a,错误b,错误d,…] 目前我的解决方案是使用++连接每个API调用。我有一个case函数来控制返回 例如:如果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 -> []
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] 终止 终止 |>反向枚举 最后,如果要在第一个错误时停止,请使用