この形式で Express 非同期ハンドラーに関する複雑な記事を書くには、長い説明が必要になる場合があります。 ご要望に応じて、このプラットフォームに合わせて縮小してみます。
Express 非同期ハンドラーは、Node.js の Express ルートのエラーと例外を処理するミドルウェアです。 コードが簡素化され、多くの冗長性が回避されます。 従来、エラーを処理するためにすべてのルートで try-catch を使用していましたが、このアプローチではコードが反復的でずさんなものになる可能性があります。 Express 非同期ハンドラーは、よりクリーンな代替手段を提供します。
const express = require('express'); const AsyncHandler = require('express-async-handler'); const router = express.Router(); router.get('/', AsyncHandler(async (req, res) => { const data = await someAsyncFunction(); res.json(data); })); module.exports = router;
これは、express パッケージと Express-async-handler パッケージをインポートする単純な JavaScript コードです。 Express.Router() 関数を使用してルートを設定します。 次に、AsyncHandler 関数によって処理される GET リクエストをルート上に定義します。
コード スニペットを見ると、AsyncHandler 関数が何のためにあるのか疑問に思うかもしれません。 AsyncHandler は、「express-async-handler」パッケージの重要な要素です。 この関数はルートをラップし、発生したエラーを捕捉して、Express エラー処理ミドルウェアに渡します。
では、これを段階的に見ていきましょう。
1. ルート ハンドラーを引数として AsyncHandler 関数を呼び出します。
2. ルート ハンドラー内で、関数を非同期としてマークしました。
3. 次に、await キーワードを使用して、Promise を返す someAsyncFunction を呼び出します。
4. Promise が解決された場合、結果をデータ変数に保存し、応答で json として送り返します。
5. Promise が拒否された場合、またはこの操作中にエラーが発生した場合、それらは AsyncHandler によって捕捉され、ミドルウェア チェーンに渡されます。
JavaScript における async/await の重要性
非同期/待機 JavaScript で非同期操作を処理する最新の方法です。 これにより、非同期コードが同期コードに似たものになり、理解しやすく、保守しやすくなります。 Express-async-handler ライブラリでの動作を理解するには、JavaScript の非同期プログラミングについて十分に理解している必要があります。
Async/await を使用すると、Promise をより快適に操作できるようになります。 try/catch を使用すると、同期コードでエラーを処理するのと同じようにエラーを処理できます。
エクスプレスとミドルウェア
Express は、Node.js 用の Web サーバー フレームワークです。これにより、HTTP リクエストの処理などの多くのことが簡素化され、ミドルウェア アーキテクチャに大幅な柔軟性が提供されます。
ミドルウェアは、アプリケーションの要求と応答のサイクルにおける要求、応答、および次のミドルウェア関数にアクセスできる関数です。 あらゆるコードを実行し、リクエストとレスポンスのオブジェクトを変更し、リクエストとレスポンスのサイクルを終了することができます。 Express-async-handler は、非同期 Express ルートの例外を処理するのに役立つミドルウェアです。
[b]覚えておいてください[/b]、Express ルートで非同期操作を扱う場合は、コードをクリーンで扱いやすくするために、express-async-handler または同様のアプローチを使用することをお勧めします。 これらのケースを処理しないと、未処理の Promise 拒否が発生し、Node.js プロセスがクラッシュする可能性があります。
この記事では、express-async-handler パッケージに焦点を当てましたが、原則は他の Node.js ミドルウェアにも当てはまります。 非同期ロジックを適切に処理する方法を理解することは、最新の JavaScript 開発の中心部分です。