Um painel consulta atividade recente e avisos. Se os avisos falham, a atividade ainda pode ser exibida. Promise.allSettled entrega o resultado de cada operação na ordem das promessas de entrada, incluindo as rejeições. Isso permite tratar a falha no card afetado.
const [activity, notices] = await Promise.allSettled([
loadActivity(),
loadNotices(),
])
if (activity.status === "fulfilled") renderActivity(activity.value)
if (notices.status === "rejected") showNoticesError()
Promise.all serve quando o fluxo depende do conjunto, como uma tela que só consegue calcular um total depois de receber todas as parcelas. Ele rejeita quando uma entrada rejeita. As operações já iniciadas continuam em execução, a menos que sejam canceláveis e você as interrompa.
Quando um card lento segura a tela
allSettled espera todas as operações terminarem. Se um card pode aparecer sozinho, trate a promessa dele separadamente ou use a estratégia de carregamento independente do seu framework. No teste, simule um card lento e outro com erro para decidir se a tela deve aguardar ou mostrar os dados que já chegaram.
Documentação de referência · Como cancelar fetch e limitar o tempo de uma requisição