JavaScriptでのお約束

Barbara Streisand
リリース: 2024-10-20 14:34:02
オリジナル
413 人が閲覧しました

約束

は、現在、将来、または決して利用できない可能性がある値を表します。
プロミスのライフサイクル:

  • 保留中: 機能が動作し始めます。

  • 完了: 操作は正常に完了し、結果値が得られました。

  • 拒否: 操作が失敗し、エラー オブジェクトが発生しました。

Promise の構文:

Promise は新しい Promise コンストラクターを使用して作成されます。このコンストラクターは、2 つの引数 (resolve と拒否) を持つ関数を受け取ります。

Promise in Javascript
コード スニペットには、新しい Promise (非同期操作を処理するメソッドを持つ Promise オブジェクト) を返す getUser という関数があります。

Promise コンストラクター内には、データベースからのデータのフェッチなどの非同期操作をシミュレートする setTimeout 関数があります。 Promise には 2 つの主要なメソッドが渡されます:

  • resolve: 操作が成功したときに呼び出されます。この場合、id === 1 の場合、疑似ユーザー オブジェクト { id: 1、name: "Diana"、email: "Diana@test.com" } を返します。

  • reject: 操作が失敗したときに呼び出されます。 ID が 1 でない場合、Promise は拒否され、「ユーザーが見つかりません...」というエラー メッセージが表示されます。

resolve 関数と拒否関数は、Promise のコンテキストで return ステートメントのように機能し、呼び出し元が操作の成功または失敗を処理できるようにします。

約束を連鎖させる

Promise は連鎖させることができ、一連の非同期操作を順番に実行できます。

Promise in Javascript

この例では、複数の Promise を連鎖させて、データの取得を段階的にシミュレートしています。

  • まず、getUser(1) を呼び出してユーザー データを取得します。問題がなければ、次のステップに進みます。

  • 2 番目に、user.id を取得し、それを使用して getOrders(user.id) を呼び出してそのユーザーの注文を取得します。

-3 番目に、リストから 2 番目の注文 (orders[1]) を選択し、getOrderDetails(orders[1]) を使用してその詳細を取得します。

いずれかの時点で何か問題が発生した場合 (ユーザーが見つからない、注文が見つからないなど)、エラーは .catch() ブロックで捕捉され、表示されます。

簡単な内訳:

  • ユーザーを要求します。
  • ユーザーを見つけたら、注文を聞きます。
  • 注文を受け取ったら、注文の 1 つについて詳細を尋ねます。
  • 何か問題が発生した場合 (ユーザーや注文が見つからないなど)、エラーが表示されます。

結果:

Promise in Javascript

このアプローチにより、コードが乱雑になる代わりに、非同期タスクをクリーンで段階的な方法で簡単に操作できるようになります。

Promise メソッド:

Promise.all(): 複数の Promise を並行して実行し、すべてが解決されるまで待機します。

Promise.all([promise1, promise2])
  .then((results) => {
    console.log(results);  // Array of all fulfilled values
  });

ログイン後にコピー

例:

Promise in Javascript

(このアプローチを読んでコールバックと比較することをお勧めします)

以上がJavaScriptでのお約束の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!