我正在尝试创建一个函数,当我不关心代码是否失败时,它可以帮助我尝试/捕获代码:
function failSafe(callback) {
try {
return callback()
} catch(err) {
console.warn(err)
}
}
实际上,我有一个failSafeAsync
版本,其中回调在被返回之前是awaited
,以便被有效地捕获。
我试图找到一个解决方案,使用相同的函数为同步和异步代码。我认为这可能是可能的,与适当的操纵承诺,但我不知道如何。
你能给我指一下正确的方向吗?
1条答案
按热度按时间bttbmeg01#
也许你会想出一个如下的实现。
failsafe
函数要么返回预期的结果,要么捕获错误并返回undefined
。显然,如果回调是一个异步函数,那么你会得到一个承诺,要么解析为预期的值,要么在承诺中捕获错误时解析为未定义的值。最好在开发工具中运行。