【发布时间】:2020-06-01 14:48:55
【问题描述】:
我有一个简单的函数,看起来类似于下面的
const foo = (bar) => {
return ![val1, val2].includes(bar) ? await apiRequest :
await apiRequest + await apiRequest2
}
apiRequest 返回一个数字。
这个函数被一个处理许多函数错误的函数包围。
但是对于这个特定的功能,我不只是想在三元组的第二部分中的一个 apiRequests 失败的情况下向用户返回错误。
const foo = (bar) => {
return ![val1, val2].includes(bar) ? await apiRequest :
await apiRequest + await apiRequest2
// intended logic for second part of ternary
if apiRequest and apiRequest resolve, return apiRequest + apiRequest2
if apiRequest fails, return apiRequest2
if apiRequest 2 fails, return apiRequest
}
我不完全确定我应该怎么做。也许我可以用 try 和 catch 包围每个部分,然后在 catch 语句中我可以尝试逻辑的下一部分?
我觉得在这种情况下我最终会得到一个超级混乱的功能
【问题讨论】:
-
如果两个 apiRequest 都失败了怎么办?
-
你不能在非异步函数中使用
await。 -
我怀疑你正在寻找一个简单的
apiRequest.catch(err => 0)
标签: javascript node.js promise async-await