ホームページ  >  記事  >  ウェブフロントエンド  >  Promise.all の個々のエラーを処理し、影響を受けない Promise データにアクセスする方法は?

Promise.all の個々のエラーを処理し、影響を受けない Promise データにアクセスする方法は?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-29 18:29:50878ブラウズ

How to Handle Individual Errors in Promise.all and Access Unaffected Promise Data?

Promise.all でエラーをキャッチ

問題:

Promise.all を使用してPromise.all は最初に発生したエラーを返し、残りを無視するため、Promise の配列を処理する場合、個々の Promise エラーを捕捉するのは困難です。その結果、配列内の影響を受けていない Promise のデータにアクセスできなくなります。

解決策:

Promise.all の固有の動作は、解決された値の配列を返すか、次のメソッドで拒否することです。メンバーの Promise が拒否された場合、単一のエラーが発生します。

ただし、コードを次のように変更して、成功した Promise からの値を受け取りながら個々のエラーを処理できます。

existingPromiseChain = existingPromiseChain.then(function() {
  var arrayOfPromises = state.routes.map(function(route) {
    return route.handler.promiseHandler()
      .then(function(data) {
        return data;
      })
      .catch(function(err) {
        return { error: err };
      });
  });
  return Promise.all(arrayOfPromises);
});

existingPromiseChain = existingPromiseChain.then(function(arrayResolved) {
  // do stuff with my array of resolved promises (values or error objects), eventually ending with a res.send();
});

説明:

エラーを個別にキャッチしてエラー オブジェクトを返すことにより、解決された値とエラー オブジェクトの両方を含む配列で Promise.all を解決できるようになります。後続の then() ブロックは、この混合配列を適切に処理できます。

以上がPromise.all の個々のエラーを処理し、影響を受けない Promise データにアクセスする方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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