简体   繁体   中英

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

I have the following piece of code:

but currently errors are not handled in any way. Would it be correct to surround that piece of code with try-catch like this:

try/catch is a correct way to catch errors from Promise.all , but at the same time, it will ignore all fulfilled requests once only a single request failed, which is not ideal if you still want to have other successful requests' data instead of logging errors, so I'd suggest you use Promise.allSettled

With this solution, it will keep all requests including failed ones and successful ones

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

A possible result can be

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

From that response, you can filter or log errors

Just one side note that Promise.allSettled does not work for IE, so you need to have polyfill to overcome that

Hopefully, it's helpful for your case:D

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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