繁体   English   中英

我可以使用 try-catch 块错误处理 await Promise.all 吗?

[英]Can I error handle await Promise.all with a try-catch block?

我有以下代码:

但目前没有以任何方式处理错误。 用这样的 try-catch 包围那段代码是否正确:

try/catch是从Promise.all捕获错误的正确方法,但与此同时,一旦只有一个请求失败,它就会忽略所有已完成的请求,如果您仍然希望拥有其他成功请求的数据,那么这并不理想记录错误,所以我建议你使用Promise.allSettled

使用此解决方案,它将保留所有请求,包括失败的请求和成功的请求

const [groupedMeditations, meditationPreferences] = await Promise.allSettled([
   getMeditationsByGroup(),
   getAllPreferences(),
]);

一个可能的结果可以是

[
   {status: "fulfilled", value: "successful value"}, // your 1st request passed
   {status: "rejected",  reason: "Error: an error"} //your 2nd request failed
]

从该响应中,您可以过滤或记录错误

一方面请注意, Promise.allSettled不适用于 IE,因此您需要使用polyfill来克服这一点

希望对您的情况有所帮助:D

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM