ホームページ > 記事 > ウェブフロントエンド > Promise.all の個々のエラーを処理し、影響を受けない Promise データにアクセスする方法は?
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 サイトの他の関連記事を参照してください。