1

ノードで async/await をいじっているだけですが、約束を待っていて拒否された場合、それがスローされるようです。私が気付いていない try/catch ブロックに戻るよりもクリーンなパターンがあるかどうか疑問に思っていますか?

async function foo() {
  const val = await Promise.reject();
}
4

1 に答える 1

1

try/catch() 、同期エラー処理と非同期エラー処理を揃えた、よりクリーンなパターンです。

(現時点では Chrome と Firefox Developer Edition で動作します)

function a(heads) {
  if (heads) throw new Error("Synchronous error");
}

async function b() {
  await Promise.resolve();
  throw new Error("Asynchronous error");
}

async function main(heads) {
  try {
    a(heads);
    await b();
  } catch (e) {
    console.log(e.message);
  }
}
main(false); // Synchronous error
main(true);  // Asynchronous error

于 2017-01-03T15:53:46.063 に答える