首頁 >web前端 >js教程 >如何處理 Promise.all 中的個別錯誤並存取不受影響的 Promise 資料?

如何處理 Promise.all 中的個別錯誤並存取不受影響的 Promise 資料?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-10-29 18:29:50966瀏覽

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

捕獲Promise.all 中的錯誤

問題:

問題:

問題:

處理一系列Promise,捕獲單一Promise 錯誤具有挑戰性,因為Promise.all 傳回第一個遇到的錯誤並忽略其餘錯誤。因此,數組中未受影響的 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 的固有行為是傳回解析值的陣列或拒絕拒絕任何成員承諾時出現單一錯誤。

但是,您可以如下修改程式碼以處理單一錯誤,同時仍從成功的承諾中接收值:說明: 透過單獨捕獲錯誤並傳回錯誤對象,您允許Promise.all 使用包含解析值和錯誤對象的陣列進行解析。隨後的 then() 區塊可以相應地處理這個混合數組。

以上是如何處理 Promise.all 中的個別錯誤並存取不受影響的 Promise 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn