JavaScript Promises -SitePointの概要

William Shakespeare
William Shakespeareオリジナル
2025-02-11 08:37:09743ブラウズ

An Overview of JavaScript Promises - SitePoint

このチュートリアルでは、非同期操作を管理するための強力なツールであるJavaScript Promisesを探ります。約束の作成、チェーン、エラー処理、および高度な方法をカバーします。

重要な概念:

    非同期操作:
  • JavaScriptタスクはすぐに結果を返さない。約束はこれらをエレガントに処理します。
  • 約束の状態: pendingphending(initial)、fulfilled(成功した完了)、拒否(障害)。 約束の創造:
  • コンストラクターは約束を開始します。 シグナルの成功、new Promise((resolve, reject) => { ... })信号障害。resolve reject
  • を使用して非同期タスクを順次実行します。 それぞれ.then()は、前の約束の結果を受け取ります .then()エラー.then()
  • のエラーの処理
  • を使用してエラーを管理します。これは、チェーン内のどこでも拒否を処理します。 .catch().catch()のクリーンアップは、
  • を使用して履行または拒否に関係なくコードを実行します。 クリーンアップタスクに最適です。
  • .finally()Advanced Promise Method:.finally()、および
  • callbacksを超えて( "コールバックヘル"):Promise.allPromise.race Promise.any約束の前に、非同期操作にコールバックが使用されていました。 ネストされたコールバック(コールバックヘル)は、複雑で維持が難しいコードにつながりました。 約束は、よりクリーンで読みやすい代替品を提供します Promise.allSettled
  • 約束を作成する:

簡単な約束の例:

および

を使用します

<code class="language-javascript">const myPromise = new Promise((resolve, reject) => {
  // Asynchronous operation (e.g., network request)
  setTimeout(() => {
    const success = true; // Simulate success or failure
    if (success) {
      resolve("Operation successful!");
    } else {
      reject("Operation failed!");
    }
  }, 1000);
});</code>
約束のチェーン:

.then()順次実行のためのチェーンの約束:.catch() クリーンアップの場合は

<code class="language-javascript">myPromise
  .then(result => console.log(result)) // Handles successful resolution
  .catch(error => console.error(error)); // Handles rejection</code>

高度な方法:
<code class="language-javascript">myPromise
  .then(result => {
    console.log(result);
    return anotherPromise(); // Return another promise to continue the chain
  })
  .then(nextResult => console.log(nextResult))
  .catch(error => console.error(error));</code>

  • Promise.all([promise1, promise2, ...])すべての約束が解決するのを待ちます。約束が拒否された場合、拒否します
  • Promise.allSettled([promise1, promise2, ...])すべての約束が解決(解決または拒否)を待つ(解決または拒否)、結果の配列を返す。
  • 解決する最初の約束の結果とともに解決します。すべての約束が拒否した場合、拒否します Promise.any([promise1, promise2, ...])
  • 解決の最初の約束の結果で解決または拒否します。 Promise.race([promise1, promise2, ...])
  • (Syntactic Sugar):

async/await約束ベースのコードを簡素化します:

async/await適切なアプローチの選択:

<code class="language-javascript">const myPromise = new Promise((resolve, reject) => {
  // Asynchronous operation (e.g., network request)
  setTimeout(() => {
    const success = true; // Simulate success or failure
    if (success) {
      resolve("Operation successful!");
    } else {
      reject("Operation failed!");
    }
  }, 1000);
});</code>

コールバック:

単純な非同期タスクに適しています。
  • 約束:チェーンとエラーの取り扱いを必要とする複雑な非同期操作に最適です。
  • は、約束を扱うためのクリーンな構文を提供し、非同期コードをより読みやすくします。
  • async/awaitよくある質問:

javascriptの約束とは?非同期操作の最終的な結果を表すオブジェクト。

  • 約束はどのように機能しますか?彼らは保留中、満たされ、拒否された州を通じて移行します。
  • どのように約束を作成しますか?
  • コンストラクターを使用します。
  • 約束の結果をどのように処理しますか?約束とは何ですか? Promise
  • は、複数の約束が同時に解決するのを待っています。 .then().catch().finally()は約束とどのように関係していますか?
  • それは約束と協力するためのよりクリーンな構文です。
  • この強化された応答は、JavaScriptの約束のより包括的で構造化された説明を提供し、理解して適用しやすくします。 画像を含めたい場合は、および.then()を実際の画像URLに置き換えることを忘れないでください。

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。