首页  >  文章  >  web前端  >  如何处理 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,捕获单个 Promise 错误具有挑战性,因为 Promise.all 返回第一个遇到的错误并忽略其余错误。因此,数组中未受影响的 Promise 中的数据将变得无法访问。

解决方案:

Promise.all 的固有行为是返回已解析值的数组或拒绝拒绝任何成员承诺时出现单个错误。

但是,您可以按如下方式修改代码以处理单个错误,同时仍然从成功的承诺中接收值:

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn