js异步进行适当的错误处理而无需等待

有人可以向我建议如何在不使用等待的情况下通过适当的错误处理来复制此代码吗? 我想异步运行fnA / B / C,而不是依次等待,我也想处理所有在主catch块中要处理的拒绝。

谢谢

async function() {
  try {
    let a = await fnA();
    let b = await fnB();
    let c = await fnC();
    return(a+b+c);
  }
  catch(e) {
    e.exitCode === 'fnAError' ? doSomething : null;
    e.exitCode === 'fnBError' ? doSomething : null;
  }
}
评论
  • hculpa
    hculpa 回复

    You can await Promise.All()

     async function() {
          try {
            let a = fnA();
            let b =  fnB();
            let c =  fnC();
             let _data=await Promise.all([a,b,c])
            return _data.reduce((a, b) => a + b, 0)
          }
          catch(e) {
            e.exitCode === 'fnAError' ? doSomething : null;
            e.exitCode === 'fnBError' ? doSomething : null;
          }
    
  • lillo
    lillo 回复

    您有AB问题。

    If you want them to run in parallel instead of in series then the solution isn't to not use await, it is to use Promise.all.

    try {
        let [a, b, c] = await Promise.all([fnA(), fnB(), fnc()]);
        return a + b + c;
    }
    

    您只需要等待所有的承诺,而不是依次等待。