JavaScript での非同期操作の処理は、効率的で流動的なアプリケーションを作成するために不可欠です。ここで約束が重要になります。サーバーからの応答を待っている間にコードがブロックされないようにする方法を考えたことはありますか?あるいは、特定のタスクを別のタスクが完了した後にのみ実行するにはどうすればよいでしょうか?そうですね、JavaScript の Promise があなたが探していた解決策です。
この記事では、Promise とは何か、Promise がどのように機能するか、そして Promise がアプリのフローをどのように改善できるかについて説明します。詳細を見てみましょう。
JavaScript の Promise は、非同期操作の最終的な完了 (または失敗) とその結果の値を表すオブジェクトです。言い換えれば、Promise は非同期コードの実行を処理する仲介者であり、コードの作成時点ではまだ不明な値を操作できるようにします。
この Promise のライフサイクルにより、非同期操作をより明確かつ効率的に処理できるようになり、「コールバック地獄」を回避できます。
Promise は、サーバーへのリクエストを操作する場合に特に便利です。データを取得するために HTTP リクエストを行うと想像してください。待機時間は変動する可能性があるため、応答の到着中にアプリケーションがフリーズすることは望ましくありません。 Promise を使用すると、コードを待たずに実行し続けることができるため、アプリケーションの全体的なパフォーマンスが向上します。
さらに、Promise は次のような他の場合にも適用できます。
Promise を使用すると、複数の非同期操作をより読みやすく保守しやすい方法で連鎖させることもできます。
Promise を作成するには、Promise コンストラクターを使用して、2 つの引数 (resolve と拒否) を持つ関数を渡します。
let miPromesa = new Promise((resolve, reject) => { // Simulación de una operación asíncrona let exito = true; if (exito) { resolve("Operación exitosa!"); } else { reject("Ocurrió un error."); } });
Promise の結果を処理するには、.then() メソッドと .catch() メソッドが使用されます。
miPromesa .then((mensaje) => { console.log(mensaje); // "Operación exitosa!" }) .catch((error) => { console.error(error); // "Ocurrió un error." });`
Promise が導入される前は、非同期操作の処理は主にコールバックで行われていました。ただし、これにより、特に複数のコールバックがネストされている場合、「コールバック地獄」として知られるコードの追跡と保守が困難になる可能性があります。
約束の利点:
Promise はコールバックに比べて大幅に改善されましたが、ECMAScript 2017 での async/await の導入により、非同期操作を処理するための構文がさらに簡素化されました。
async function obtenerDatos() { try { let response = await fetch('https://jsonplaceholder.typicode.com/posts/1'); let data = await response.json(); console.log(data); } catch (error) { console.error('Error:', error); } }
async/await を使用すると、コードはより線形になり、同期コードに似ていますが、内部では依然として非同期です。ただし、async/await は中核で依然として Promise を使用していることに注意することが重要です。そのため、Promise がどのように機能するかを理解することが、async/await.
の使用をマスターする鍵となります。JavaScript の Promise は、複数のコールバックでコードを複雑にすることなく、非同期操作を処理するための強力なツールです。サーバーへのリクエストからアプリケーション内のより複雑なタスクに至るまで、Promise を使用すると、よりクリーンで読みやすく、保守しやすいコードを作成できます。
単純な Web アプリケーションを構築しているか、より複雑なシステムを構築しているかに関係なく、コードのパフォーマンスを最適化するには、Promise の処理方法を学ぶことが不可欠です。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3