非同期プログラミングでは、async/await 機能を使用して同期タスクと非同期タスクをシームレスに切り替えることができます。ただし、トップレベルで非同期コードを実行する場合は、特定の考慮事項を行う必要があります。
非同期関数を定義すると、Promise が返されます。この関数をトップレベルで呼び出すと、解決された値ではなく Promise がすぐに返されます。これが、コンソールが非同期タスクを実行する前に Promise オブジェクトを出力する理由です。
これを解決するには、いくつかのオプションがあります。
1.トップレベルの待機 (ES2022 プロポーザル)
最新の環境では、モジュールでトップレベルの待機を使用できます。これにより、モジュール スコープ内で Promise を直接待つことができます。
const text = await main(); console.log(text); // Logs the resolved value
2.処理されない拒否を伴うトップレベルの非同期関数
決して拒否しないトップレベルの非同期関数を定義できます。これにより、未処理の拒否エラーが防止されますが、エラーは明示的に処理されません。
(async () => { try { const text = await main(); console.log(text); // Logs the resolved value } catch (e) { // Error handling (optional) } })();
3. then() と catch()
上記のオプションのどちらも適切でない場合は、Promise の then() メソッドと catch() メソッドを使用して結果を処理できます。
main() .then((text) => { console.log(text); // Logs the resolved value }) .catch((err) => { // Error handling });
注: いずれの場合も、未処理の拒否エラーを防ぐために、拒否を適切に処理することが重要です。
以上がJavaScript のトップレベルで非同期コードを適切に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。