検索
ホームページCMS チュートリアル&#&プレスJavaScript での Promise.all() メソッドと Promise.allSettled() メソッドの使用

JavaScript での Promise.all() メソッドと Promise.allSettled() メソッドの使用

このチュートリアルでは、JavaScript で Promise await を使用する方法を説明します。

このチュートリアルでは、Promise.all() メソッドと Promise.allSettled() メソッドについて、およびそれらを使用して複数の Promise を処理する方法について説明します。

Promise.all() メソッドを使用します

Promise オブジェクトには、then()catch()finally() という 3 つの便利なメソッドがあります。 Promise の完了時にコールバック メソッドを実行するために使用されます。 p>

Promise.all() このメソッドは静的メソッドです。これは、メソッドがクラス全体に属し、クラスの特定のインスタンスにバインドされていないことを意味します。 Promise の反復可能値を入力として受け取り、単一の Promise オブジェクトを返します。

前に述べたように、

Promise.all() メソッドは新しい Promise を返します。このメソッドに渡されたすべての Promise が正常に解決された場合、この新しい Promise は決定された Promise 値の配列に解決されます。渡された Promise の 1 つが拒否されると、この新しい Promise も拒否されます。

すべての約束は正常に解決されました

以下は、すべての Promise が正常に解決される

Promise.all() メソッドの例です。 リーリー Promise.all()

メソッドを呼び出す前のステートメントは、19:32:06 に記録されました。さらに、

promise_c という 3 番目の Promise は解決に最も時間がかかり、4 秒後に解決されます。これは、all() メソッドを呼び出して返された Promise も解決に 4 秒かかることを意味します。コールバック関数を then() メソッドに渡すことで、解決に 4 秒かかるかどうかを確認できます。 ここで注意すべきもう 1 つの重要な点は、返された完了値の配列には、Promise を Promise.all()

メソッドに渡したのと同じ順序で値が含まれていることです。

promise_b という名前の Promise は最も速く解決され、わずか 2 秒かかります。ただし、解析された値は返された配列の 2 番目の位置にあります。これは、Promise を Promise.all() メソッドに渡した場所と一致します。 この順序を維持すると、状況によっては非常に役立ちます。たとえば、10 の異なる Promise を使用して 10 の異なる都市の天気情報を取得しているとします。これらすべての問題が同時に解決されることはなく、解決される順序を事前に知ることは不可能です。ただし、Promise が渡された順序でデータが返されることがわかっている場合は、後の操作にデータを正しく割り当てることができます。

約束が拒否されました

次に、拒否された Promise の 1 つの例を示します。 リーリー

同様に、

all()

メソッドを呼び出す前のステートメントは 20:03:43 に記録されます。しかし、2 番目の約束

promise_b

は今回は拒否に終わりました。 promise_b が 2 秒後に拒否されたことがわかります。これは、all() メソッドによって返された Promise も、promise_b と同じエラーで 2 秒後に拒否される必要があることを意味します。出力から、これがまさに起こっていることは明らかです。 await キーワードとともに使用します

await キーワードは、次のステップに進む前に Promise が解決されるのを待つために使用されることをすでにご存知かもしれません。

all()

メソッドが Promise を返すこともわかります。これは、Promise.all() メソッドの呼び出しとともに await を使用できることを意味します。 覚えておくべき唯一のことは、await は非同期関数とモジュール内でのみ機能するため、次のように非同期関数内でコードをラップする必要があるということです。 リーリー

今回は、提供されたデータと期間に基づいて Promise を作成する

create_promise() という関数を定義します。非同期 result_from_promises()

関数は、

await キーワードを使用して Promise が解決されるのを待ちます。 Promise.allSettled() メソッドを使用します すべての Promise が正常に解決された後にのみ続行したい場合は、

Promise.all()

メソッドを使用するのが合理的です。これは、ゲーム アセットをロードする場合などに便利です。 しかし、さまざまな都市の天気に関する情報を取得しているとします。この場合、データ取得に成功した全都市の気象情報を出力し、データ取得に失敗した場合にはエラーメッセージを出力することができます。

この場合、

Promise.allSettled() メソッドが最適に機能します。このメソッドは、渡されたすべてのコミットメントが解決または拒否によって解決されるまで待機します。このメソッドによって返される Promise には、各 Promise の結果に関する情報を含むオブジェクトの配列が含まれます。

function create_promise(city) {
  let random_number = Math.random();
  
  let duration = Math.floor(Math.random()*5)*1000;

  return new Promise((resolve, reject) => {
    if (random_number < 0.8) {
      setTimeout(() => {
        resolve(`Show weather in ${city}`);
      }, duration);
    } else {
      setTimeout(() => {
        reject(`Data unavailable for ${city}`);
      }, duration);
    }
  });
}

const promise_a = create_promise("Delhi");
const promise_b = create_promise("London");
const promise_c = create_promise("Sydney");

const my_promises = [create_promise("Delhi"), create_promise("London"), create_promise("Sydney"), create_promise("Rome"), create_promise("Las Vegas")];

async function result_from_promises(promises) {
  let loading_status = await Promise.allSettled(promises);
  console.log(loading_status);
}

result_from_promises(my_promises);

/* Outputs

[
  {
    "status": "fulfilled",
    "value": "Show weather in Delhi"
  },
  {
    "status": "fulfilled",
    "value": "Show weather in London"
  },
  {
    "status": "fulfilled",
    "value": "Show weather in Sydney"
  },
  {
    "status": "rejected",
    "reason": "Data unavailable for Rome"
  },
  {
    "status": "fulfilled",
    "value": "Show weather in Las Vegas"
  }
]

*/

如您所见,数组中的每个对象都包含一个 status 属性,让我们知道承诺是否已实现或被拒绝。在履行承诺的情况下,它包含 value 属性中的解析值。在被拒绝的 Promise 的情况下,它在 reason 属性中包含拒绝的原因。

最终想法

我们了解了 Promise 类的两个有用方法,它们可以让您同时处理多个 Promise。当您想要在其中一个 Promise 被拒绝后立即停止等待其他 Promise 解决时, Promise.all() 方法很有用。当您想要等待所有承诺解决时,无论其解决或拒绝状态如何, Promise.allSettled() 方法非常有用。

以上がJavaScript での Promise.all() メソッドと Promise.allSettled() メソッドの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

3日以内にWordPressを学ぶことができます。 1.テーマ、プラグインなどのマスター基本知識。2。インストールや作業原則などのコア関数を理解します。 3.例を使用して、基本的および高度な使用法を学びます。 4.デバッグテクニックとパフォーマンスの最適化の提案を理解します。

WordPressはCMSですか?WordPressはCMSですか?Apr 08, 2025 am 12:02 AM

WordPressはコンテンツ管理システム(CMS)です。コンテンツ管理、ユーザー管理、テーマ、プラグイン機能を提供して、Webサイトコンテンツの作成と管理をサポートします。その実用的な原則には、ブログから企業Webサイトまで、さまざまなニーズに適したデータベース管理、テンプレートシステム、プラグインアーキテクチャが含まれます。

ワードプレスは何に適していますか?ワードプレスは何に適していますか?Apr 07, 2025 am 12:06 AM

wordpressisisgoodforvirtalayanywebprojectoitsversitilityasacms.itexcelsin:1)ユーザーフレンドリー、柔軟性と柔軟性と顧客化の維持、およびプルージンの数値化; 3)seooptimization;

WixまたはWordPressを使用する必要がありますか?WixまたはWordPressを使用する必要がありますか?Apr 06, 2025 am 12:11 AM

WIXは、プログラミングの経験がないユーザーに適しており、WordPressは、よりコントロールと拡張機能を必要とするユーザーに適しています。 1)WIXはドラッグアンドドロップエディターとリッチテンプレートを提供しているため、Webサイトをすばやく構築できます。 2)オープンソースのCMSとして、WordPressには巨大なコミュニティとプラグインエコシステムがあり、詳細なカスタマイズと拡張をサポートしています。

WordPressの費用はいくらですか?WordPressの費用はいくらですか?Apr 05, 2025 am 12:13 AM

WordPress自体は無料ですが、使用するには余分な費用がかかります。1。WordPress.comは、無料から支払いまでの範囲のパッケージを提供し、価格は月あたり数ドルから数十ドルまでの範囲です。 2。WordPress.orgでは、ドメイン名(年間10〜20米ドル)とホスティングサービス(月額5〜50米ドル)を購入する必要があります。 3.ほとんどのプラグインとテーマは無料で、有料価格は数十から数百ドルです。適切なホスティングサービスを選択し、プラグインとテーマを合理的に使用し、定期的に維持および最適化することにより、WordPressのコストを効果的に制御および最適化できます。

WordPressはまだ無料ですか?WordPressはまだ無料ですか?Apr 04, 2025 am 12:06 AM

WordPressのコアバージョンは無料ですが、使用中に他の料金が発生する場合があります。 1。ドメイン名とホスティングサービスには支払いが必要です。 2。高度なテーマとプラグインが充電される場合があります。 3.プロフェッショナルサービスと高度な機能が請求される場合があります。

WordPressは初心者にとって簡単ですか?WordPressは初心者にとって簡単ですか?Apr 03, 2025 am 12:02 AM

WordPressは、初心者が簡単に始めることができます。 1.バックグラウンドにログインした後、ユーザーインターフェイスは直感的であり、シンプルなダッシュボードは必要なすべての関数リンクを提供します。 2。基本操作には、コンテンツの作成と編集が含まれます。 WysiWygエディターは、コンテンツの作成を簡素化します。 3.初心者は、プラグインとテーマを介してウェブサイトの機能を拡張でき、学習曲線は存在しますが、練習を通じて習得できます。

なぜWordPressを使用するのはなぜですか?なぜWordPressを使用するのはなぜですか?Apr 02, 2025 pm 02:57 PM

人々は、その力と柔軟性のためにWordPressを使用することを選択します。 1)WordPressは、さまざまなWebサイトのニーズに適した、使いやすさとスケーラビリティを備えたオープンソースのCMSです。 2)豊富なテーマとプラグイン、巨大なエコシステム、強力なコミュニティサポートがあります。 3)WordPressの作業原則は、テーマ、プラグイン、コア関数に基づいており、PHPとMySQLを使用してデータを処理し、パフォーマンスの最適化をサポートします。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい