嵌套异步/等待javascript

时间:2017-12-01 12:35:49

标签: javascript asynchronous async-await try-catch

这是有效的异步/等待逻辑:从另一个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 

1 个答案:

答案 0 :(得分:2)

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

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

(如果您还希望捕获部分的例外情况 - 如果没有,则您的版本没问题,有关替代方案请参阅here