我可以使用多个' await'在异步函数的try / catch块中?

时间:2018-05-27 22:58:34

标签: javascript asynchronous

async asyncfunction(){
  try{
    await method1();
    await method2();
  }
  catch(error){
    console.log(error);
  }
}

给定method1()和method2()是异步函数。每个await方法都应该有一个try / catch块吗?是否有更清晰的方式来写这个?我试图避免'然后'和' .catch'链接。

1 个答案:

答案 0 :(得分:10)

使用一个包含多个await操作的try / catch块很好。

await运算符存储其父async函数'执行上下文并返回事件循环。 await运算符的执行在使用已结算状态和其操作数的值回调时恢复。

恢复后,await恢复先前保存的执行上下文,并返回操作数promise作为await表达式的结果,或者抛出被拒绝操作数的拒绝原因。

try/catch块调用是保存和恢复之前和之后的执行上下文的一部分。因此,多个await操作不会干扰他们共享的外部try块的行为。将调用catch块,其中包含拒绝的try块中等待的任何承诺的拒绝原因。