嵌套异步/等待javascript

嵌套异步/等待javascript,javascript,asynchronous,async-await,try-catch,Javascript,Asynchronous,Async Await,Try Catch,这是有效的异步/等待逻辑:从另一个try/catch中调用try/catch吗 //within async function... try { await asyncFunctionFirst(); } catch (errFirst) { try { await asyncFunctionSecond(); } catch (errSecond) {

这是有效的异步/等待逻辑:从另一个try/catch中调用try/catch吗

//within async function...

try { 
    await asyncFunctionFirst();
    } catch (errFirst) {
          try {
              await asyncFunctionSecond();              
          } catch (errSecond) {
              // return errSecond response
          }
      //return errFirst response          
    } 
//return response ok 

是的,这是有效的语法。但是我不会这样写。宁可使用

try { 
    await asyncFunctionFirst();
    return …; // response ok 
} catch (errFirst) {
    try {
        await asyncFunctionSecond();
        return …; // errFirst response
    } catch (errSecond) {
        return …; // errSecond response
    }
}

(如果您还想捕获
部分的异常-如果不是,您的版本就可以了,请参见备选方案)

为什么它无效?我不确定该方法是否可行,或者是否有我缺少的更优雅的解决方案。不,这是可能的最优雅的方法(假设您需要调用这些方法/执行该逻辑)。异步/
等待
的目的正是为了使异步逻辑能够以这种方式表示。根据“等待运算符用于等待承诺。它只能在异步函数中使用。”因此,我猜它是有效的。您测试过它是否运行了吗?好的,非常感谢