非同期プログラミングは、JavaScript、特に Node.js の大きな強みの 1 つです。ただし、関心を分離する必要があるため、複数の非同期操作がコールバックを介して実行されることが多く、これがいわゆる「コールバック地獄」につながる可能性があります。たとえば、JavaScript コードでネストされたコールバックを操作している状況を考えて、Promises と async/await 構造を使用してそれをリファクタリングする方法を見てみましょう。
コールバックを使用して単純な製品管理システムのファイル操作を処理するコードから始めましょう:
ここでは、ファイルの読み取りと書き込みを行う、適切にネストされたバックコールがいくつかあります。これはおそらく、コールバック地獄に陥ったときに作成するインスタンスの 1 つです。最後に、非同期操作の数が増えるとコードが大きくなり、インデントの量も増えて読みにくくなります。 save() メソッドでは、fs.readFile 関数がファイルを読み取り、そのコールバックが内容を解析し、fs.writeFile 関数を使用してファイルの内容を書き換えます。これは別のコールバックで行われます。このようなレベルのネストにより、コードはいわゆる「破滅のピラミッド」に似たものになります。
このコールバック地獄を回避するために、コードをより読みやすく、管理しやすく、デバッグしやすくする JavaScript Promise と async/await 構文があります。
改良版は次のとおりです:
Promise は、最小限のネスト構造で非同期操作を線形に管理できるようにすることで役立ちます。 async/await パターンはコードの読みやすさを向上させ、同期操作に近い方法で非同期操作にも対応します。特に try ブロックと catch ブロックを使用すると、エラー処理がより透明になり、理解しやすくなり、コードの保守性が向上します。
JavaScript、特に Node.js でコードを適切に作成する際に、コールバック地獄が本当の問題になる可能性があります。 Promises と async/await の助けを借りて、大量にネストされたコールバック地獄をクリーンな線形コードに変えることができ、同時にエラーへの対処が容易になります。コードを変換して見栄えを良くするだけでなく、より優れた JavaScript プログラマーになる正しい軌道に乗せることもできます。
以上がコールバック地獄を明示的に回避するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。