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