如何在 async/await 语法中使用 Promise.prototype.finally()?

How to use Promise.prototype.finally() in async/await syntax?

实际上我的主要问题是在async/await ES8语法中使用Promise.prototype.catch(),毫无疑问Promise.prototype.then()存在于async/await语法的本质中。

我在 async/await 中搜索了关于使用 Promise.prototype.catch() 的信息,发现了这个:

async () => {
  try {
    const result1 = await firstAsynchronousFunction();
    const result2 = await secondAsynchronousFunction(result1);
    console.log(result2);
  } catch(err) {
    throw new Error(`Something failed`);
  }
}

而且我绝对知道 Promise 链接,例如:

new Promise((resolve) => {
  console.log(`Initial`);
  resolve();
})
.then(() => {
  console.log(`Task Number One`);
})
.catch(() => {
  console.log(`Task in Error`);
})
.finally(() => {
  console.log(`All Tasks is Done`);
})

所以,我的问题是 如何在 async/await 语法中使用 finally?

这应该有效:

async () => {
  try {
    const result1 = await firstAsynchronousFunction();
    const result2 = await secondAsynchronousFunction(result1);
    console.log(result2);
  } catch(err) {
    throw new Error(`Something failed`);
  } finally {
    console.log(`All Tasks are Done`);
  }
}