如何处理承诺和非承诺错误一起捕获

Bob*_*ose 1 javascript promise

我正在执行一个函数数组,每个函数都可能返回一个承诺并可能返回一个值。在处理返回值时,我希望能够捕获所选函数创建的所有错误,而不管它是承诺还是值。这是我希望完成的一个例子:

const functionA = (v) => {
throw "Value error"
}
const functionB = (v) => new Promise(function(resolve, reject) {
  throw 'Promise error';
})

const functionsArray = [functionA,functionB]
  .map(f=>Promise.resolve(f())) // run function and cast return as promise
  .map(f=>f.catch(console.log)) //add error catching

 
Run Code Online (Sandbox Code Playgroud)

我知道我可以将函数执行包装在 try/catch 块中,但我更喜欢有一个错误捕获段。

Ry-*_*Ry- 6

.then() 捕获同步错误:

const functionsArray = [functionA, functionB]
  .map(f => Promise.resolve().then(f))
Run Code Online (Sandbox Code Playgroud)

有一个建议将其称为Promise.try

异步函数也可以解决这个问题:

const functionsArray = [functionA, functionB]
  .map(async f => f())
Run Code Online (Sandbox Code Playgroud)