目次
同様に、
最终想法
ホームページ CMS チュートリアル &#&プレス JavaScript での Promise.all() メソッドと Promise.allSettled() メソッドの使用

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

Aug 30, 2023 pm 09:05 PM
JavaScriptプログラミング promiseall() promiseallsettled()

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 の結果に関する情報を含むオブジェクトの配列が含まれます。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

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 までご連絡ください。

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

jQueryのリファレンスメソッドを詳しく解説:クイックスタートガイド jQueryのリファレンスメソッドを詳しく解説:クイックスタートガイド Feb 27, 2024 pm 06:45 PM

jQuery 参照方法の詳細説明: クイック スタート ガイド jQuery は、Web サイト開発で広く使用されている人気のある JavaScript ライブラリであり、JavaScript プログラミングを簡素化し、開発者に豊富な機能を提供します。この記事では、jQuery の参照方法を詳しく紹介し、読者がすぐに使い始めるのに役立つ具体的なコード例を示します。 jQuery の導入 まず、HTML ファイルに jQuery ライブラリを導入する必要があります。 CDN リンクを通じて導入することも、ダウンロードすることもできます

クロージャによって引き起こされるメモリリークの問題を解決する クロージャによって引き起こされるメモリリークの問題を解決する Feb 18, 2024 pm 03:20 PM

タイトル: クロージャによって引き起こされるメモリ リークと解決策 はじめに: クロージャは JavaScript における非常に一般的な概念であり、内部関数が外部関数の変数にアクセスできるようにします。ただし、クロージャを誤って使用すると、メモリ リークが発生する可能性があります。この記事では、クロージャによって引き起こされるメモリ リークの問題を調査し、解決策と具体的なコード例を提供します。 1. クロージャによるメモリリーク クロージャの特徴は、内部関数が外部関数の変数にアクセスできることです。つまり、クロージャ内で参照される変数はガベージコレクションされません。不適切に使用すると、

JavaScript による画像処理とコンピューター ビジョンをマスターする JavaScript による画像処理とコンピューター ビジョンをマスターする Nov 04, 2023 am 08:25 AM

JavaScript で画像処理とコンピュータ ビジョンを習得するには、特定のコード サンプルが必要です。インターネットの普及とテクノロジーの進歩に伴い、画像処理とコンピュータ ビジョンは、多くの開発者や研究者にとって徐々に関心のある分野になってきました。広く使用されているプログラミング言語として、JavaScript は、画像処理やコンピューター ビジョン関連のタスクの実現に役立つ多くの強力なツールとライブラリを提供します。この記事では、読者がすぐに使いこなせるように、一般的に使用されるいくつかの JavaScript ライブラリと具体的なコード例を紹介します。

フロントエンドエンジニアの責任分析:主な仕事は何ですか? フロントエンドエンジニアの責任分析:主な仕事は何ですか? Mar 25, 2024 pm 05:09 PM

フロントエンドエンジニアの責任分析:主な仕事は何ですか?インターネットの急速な発展に伴い、フロントエンドエンジニアは非常に重要な専門的役割を果たし、ユーザーとWebサイトアプリケーションの間の橋渡しとして重要な役割を果たします。では、フロントエンドエンジニアは主に何をするのでしょうか?この記事では、フロントエンド エンジニアの責任を分析して調べてみましょう。 1. フロントエンド エンジニアの基本的な責任 Web サイトの開発と保守: フロントエンド エンジニアは、Web サイトの HTML、CSS、JavaScr の作成など、Web サイトのフロントエンド開発を担当します。

JavaScript によるマスターデータの視覚化とレポート生成 JavaScript によるマスターデータの視覚化とレポート生成 Nov 04, 2023 pm 12:24 PM

JavaScript でデータの視覚化とレポートの生成をマスターするには、特定のコード サンプルが必要ですが、今日、データの視覚化とレポートの生成は情報化時代に不可欠な部分となっています。企業の意思決定分析、マーケティング促進、科学研究のいずれであっても、大規模で複雑なデータは、直感的な視覚化方法を通じて表示および分析する必要があります。 Web 開発で広く使用されているプログラミング言語である JavaScript には、豊富なデータ視覚化ライブラリとレポート生成ライブラリがあり、開発者によるデータ分析が大幅に容易になります。

jQueryを導入するために必要なパッケージは何ですか? jQueryを導入するために必要なパッケージは何ですか? Feb 23, 2024 pm 12:00 PM

jQuery は、JavaScript プログラミングを簡素化するためのシンプルかつ強力な関数を提供するよく知られた JavaScript ライブラリです。 Web プロジェクトに jQuery を導入するときは、次のコードを HTML ファイルに追加して、必要なパッケージを導入する必要があります。 My Web ページ

jQueryメソッドを実装して動的に要素をdivに追加する jQueryメソッドを実装して動的に要素をdivに追加する Feb 24, 2024 pm 08:03 PM

jQuery は、JavaScript プログラミングを簡素化するために使用される人気のある JavaScript ライブラリです。 HTML 要素に要素を動的に追加する機能など、豊富な機能とメソッドのセットが提供されます。この記事では、jQuery を使用して div に要素を動的に追加する方法と、具体的なコード例を紹介します。まず、jQuery ライブラリを HTML ドキュメントに導入する必要があります。次のような方法で導入できます。

JavaScript での Promise.all() メソッドと Promise.allSettled() メソッドの使用 JavaScript での Promise.all() メソッドと Promise.allSettled() メソッドの使用 Aug 30, 2023 pm 09:05 PM

このチュートリアルでは、JavaScript で Promise awaits を使用する方法を説明します。このチュートリアルでは、Promise.all() メソッドと Promise.allSettled() メソッドについて、およびそれらを使用して複数の Promise を処理する方法について説明します。 Promise.all() メソッドの使用 Promise オブジェクトには、then()、catch()、finally() という 3 つの便利なメソッドがあり、Promise の完了時にコールバック メソッドを実行するために使用できます。 Promise.all() メソッドは静的メソッドです。つまり、クラス全体に属し、クラスの特定のインスタンスにバインドされません。反復可能な Prom を受け入れます

See all articles