web-dev-qa-db-ja.com

非同期/待機構文でPromise.prototype.finally()を使用する方法

実際、私の主な質問は_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`);
})
_

だから、私の質問はfinallyを_async/await_構文で使用する方法ですか?

13
AmerllicA

これはうまくいくはずです:

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 is Done`);
  }
}
25
jcubic