async
関数が例外を同期的にスローするとどうなりますか?非同期関数の同期例外
例:
async function whatHappen() {
throw new BombError()
// no "await" here
}
try {
whatHappen().catch(() => console.error('rejected'))
} catch (e) {
console.error('thrown')
}
私はバベルでこの例を実行するのだが、throw
が自動的に拒否約束にキャッチされ、翻訳されているようですので、例は、コンソールに"rejected"
を記録します。
これは実際の仕様とJavaScriptエンジンでの実装方法を反映していますか?私はtechnical proposalを読んでみましたが、仕様は明らかに言語ユーザーではなく言語の実装者を対象としています。
私はasync
関数に頼ることができます常には、約束を返したり、例外を同期的にスローする可能性がありますか? await
なしで非同期関数を呼び出すと、try
/catch
ブロックにラップされるシナリオはありますか?
ありがとうございました。非同期関数プロポーザルからリンクされた遅延関数のストローマンは、例外が常に拒否された約束をもたらすと言うことによって実際にこれを明確にします。提案の言語そのものは、私を孤立させて少し曖昧に感じました。 –